home *** CD-ROM | disk | FTP | other *** search
Text File | 1994-09-28 | 207.5 KB | 1,966 lines | [TEXT/ttxt] |
- %!PS-Adobe-2.0
- %%Creator: dvips, version 5.4 (C) 1986-90 Radical Eye Software
- %%Title: haskell.dvi
- %%Pages: 30 1
- %%BoundingBox: 0 0 612 792
- %%EndComments
- %%BeginProcSet: tex.pro
- /TeXDict 200 dict def TeXDict begin /N /def load def /B{bind def}N /S /exch
- load def /X{S N}B /TR /translate load N /isls false N /vsize 10 N /@rigin{
- isls{[0 1 -1 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale
- Resolution VResolution vsize neg mul TR}B /@letter{/vsize 10 N}B /@landscape{
- /isls true N /vsize -1 N}B /@a4{/vsize 10.6929133858 N}B /@a3{/vsize 15.5531 N
- }B /@ledger{/vsize 16 N}B /@legal{/vsize 13 N}B /@manualfeed{statusdict
- /manualfeed true put}B /@copies{/#copies X}B /FMat[1 0 0 -1 0 0]N /FBB[0 0 0 0
- ]N /df{/sf 1 N /fntrx FMat N df-tail}B /dfs{div /sf X /fntrx[sf 0 0 sf neg 0 0
- ]N df-tail}B /df-tail{/nn 8 dict N nn begin /FontType 3 N /FontMatrix fntrx N
- /FontBBox FBB N string /base X array /BitMaps X /BuildChar{CharBuilder}N
- /Encoding IE N end dup{/foo setfont}2 array copy cvx N load 0 nn put /ctr 0 N[
- }B /E{pop nn dup definefont setfont}B /ch-image{ch-data dup type /stringtype
- ne{ctr get /ctr ctr 1 add N}if}B /ch-width{ch-data dup length 5 sub get}B
- /ch-height{ch-data dup length 4 sub get}B /ch-xoff{128 ch-data dup length 3
- sub get sub}B /ch-yoff{ch-data dup length 2 sub get 127 sub}B /ch-dx{ch-data
- dup length 1 sub get}B /ctr 0 N /CharBuilder{save 3 1 roll S dup /base get 2
- index get S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx 0 ch-xoff ch-yoff
- ch-height sub ch-xoff ch-width add ch-yoff setcachedevice ch-width ch-height
- true[1 0 0 -1 -.1 ch-xoff sub ch-yoff .1 add]{ch-image}imagemask restore}B /D{
- /cc X dup type /stringtype ne{]}if nn /base get cc ctr put nn /BitMaps get S
- ctr S sf 1 ne{dup dup length 1 sub dup 2 index S get sf div put}if put /ctr
- ctr 1 add N}B /I{cc 1 add D}B /bop{userdict /bop-hook known{bop-hook}if /SI
- save N @rigin 0 0 moveto}B /eop{clear SI restore showpage userdict /eop-hook
- known{eop-hook}if}B /@start{userdict /start-hook known{start-hook}if
- /VResolution X /Resolution X 1000 div /DVImag X /IE 256 array N 0 1 255{IE S 1
- string dup 0 3 index put cvn put}for}B /p /show load N /RMat[1 0 0 -1 0 0]N
- /BDot 8 string N /v{/ruley X /rulex X V}B /V{gsave TR -.1 -.1 TR rulex ruley
- scale 1 1 false RMat{BDot}imagemask grestore}B /a{moveto}B /delta 0 N /tail{
- dup /delta X 0 rmoveto}B /M{S p delta add tail}B /b{S p tail}B /c{-4 M}B /d{
- -3 M}B /e{-2 M}B /f{-1 M}B /g{0 M}B /h{1 M}B /i{2 M}B /j{3 M}B /k{4 M}B /l{p
- -4 w}B /m{p -3 w}B /n{p -2 w}B /o{p -1 w}B /q{p 1 w}B /r{p 2 w}B /s{p 3 w}B /t
- {p 4 w}B /w{0 rmoveto}B /x{0 S rmoveto}B /y{3 2 roll p a}B /bos{/SS save N}B
- /eos{clear SS restore}B end
- %%EndProcSet
- TeXDict begin 1000 300 300 @start /Fa 33 122 df<78FCFCFCFC7806067D850D>46
- D<00600001E0000FE000FFE000F3E00003E00003E00003E00003E00003E00003E00003E00003E0
- 0003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E0007FFF
- 807FFF80111B7D9A18>49 D<07F8001FFE00383F80780FC0FC07C0FC07E0FC03E0FC03E07803E0
- 0007E00007C00007C0000F80001F00001E0000380000700000E0000180600300600600600800E0
- 1FFFC03FFFC07FFFC0FFFFC0FFFFC0131B7E9A18>I<03F8001FFE003C1F003C0F807C07C07E07
- C07C07C03807C0000F80000F80001E00003C0003F800001E00000F800007C00007C00007E03007
- E07807E0FC07E0FC07E0FC07C0780F80781F001FFE0007F800131B7E9A18>I<00018000038000
- 0780000F80001F80003F80006F8000CF80008F80018F80030F80060F800C0F80180F80300F8060
- 0F80C00F80FFFFF8FFFFF8000F80000F80000F80000F80000F80000F8001FFF801FFF8151B7F9A
- 18>I<1801801FFF001FFE001FFC001FF8001FC00018000018000018000018000019F8001E0E00
- 180F801007800007C00007E00007E00007E07807E0F807E0F807E0F807C0F007C0600F80381F00
- 1FFE0007F000131B7E9A18>I<00038000000380000007C0000007C0000007C000000FE000000F
- E000001FF000001BF000001BF0000031F8000031F8000061FC000060FC0000E0FE0000C07E0000
- C07E0001803F0001FFFF0003FFFF8003001F8003001F8006000FC006000FC00E000FE00C0007E0
- FFC07FFEFFC07FFE1F1C7E9B24>65 D<001FE02000FFF8E003F80FE007C003E00F8001E01F0000
- E03E0000E03E0000607E0000607C000060FC000000FC000000FC000000FC000000FC000000FC00
- 0000FC000000FC0000007C0000607E0000603E0000603E0000C01F0000C00F80018007C0030003
- F80E0000FFFC00001FE0001B1C7D9B22>67 D<FFFC3FFFFFFC3FFF0FC003F00FC003F00FC003F0
- 0FC003F00FC003F00FC003F00FC003F00FC003F00FC003F00FC003F00FFFFFF00FFFFFF00FC003
- F00FC003F00FC003F00FC003F00FC003F00FC003F00FC003F00FC003F00FC003F00FC003F00FC0
- 03F00FC003F0FFFC3FFFFFFC3FFF201C7E9B25>72 D<FFFF00FFFF000FC0000FC0000FC0000FC0
- 000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0030FC0
- 030FC0030FC0070FC0070FC0060FC00E0FC01E0FC07EFFFFFEFFFFFE181C7E9B1D>76
- D<FFC00003FFFFE00007FF0FE00007F00DF0000DF00DF0000DF00DF0000DF00CF80019F00CF800
- 19F00C7C0031F00C7C0031F00C3E0061F00C3E0061F00C1F00C1F00C1F00C1F00C1F00C1F00C0F
- 8181F00C0F8181F00C07C301F00C07C301F00C03E601F00C03E601F00C01FC01F00C01FC01F00C
- 01FC01F00C00F801F00C00F801F0FFC0701FFFFFC0701FFF281C7E9B2D>I<FFFC03FFFFFC03FF
- 0FC000300FC000300FC000300FC000300FC000300FC000300FC000300FC000300FC000300FC000
- 300FC000300FC000300FC000300FC000300FC000300FC000300FC000300FC000300FC0003007C0
- 003007C0006003E000E001F001C000FC0780007FFE00000FF800201C7E9B25>85
- D<0FF8001C1E003E0F803E07803E07C01C07C00007C0007FC007E7C01F07C03C07C07C07C0F807
- C0F807C0F807C0780BC03E13F80FE1F815127F9117>97 D<03FC000E0E001C1F003C1F00781F00
- 780E00F80000F80000F80000F80000F80000F800007800007801803C01801C03000E0E0003F800
- 11127E9115>99 D<000FF0000FF00001F00001F00001F00001F00001F00001F00001F00001F000
- 01F001F9F00F07F01C03F03C01F07801F07801F0F801F0F801F0F801F0F801F0F801F0F801F078
- 01F07801F03C01F01C03F00F0FFE03F9FE171D7E9C1B>I<01FC000F07001C03803C01C07801C0
- 7801E0F801E0F801E0FFFFE0F80000F80000F800007800007C00603C00601E00C00F038001FC00
- 13127F9116>I<007F0001E38003C7C00787C00F87C00F83800F80000F80000F80000F80000F80
- 00FFF800FFF8000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80
- 000F80000F80000F80007FF8007FF800121D809C0F>I<03F8F00E0F381E0F381C07303C07803C
- 07803C07803C07801C07001E0F000E0E001BF8001000001800001800001FFF001FFFC00FFFE01F
- FFF07801F8F00078F00078F000787000707800F01E03C007FF00151B7F9118>I<FF0000FF0000
- 1F00001F00001F00001F00001F00001F00001F00001F00001F00001F0FC01F31E01F40F01F80F8
- 1F80F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F8FFE7FF
- FFE7FF181D7F9C1B>I<1E003F003F003F003F001E00000000000000000000000000FF00FF001F
- 001F001F001F001F001F001F001F001F001F001F001F001F001F00FFE0FFE00B1E7F9D0E>I<FF
- 0000FF00001F00001F00001F00001F00001F00001F00001F00001F00001F00001F0FF81F0FF81F
- 03801F07001F0C001F18001F70001FF8001FFC001FBC001F3E001F1F001F0F001F0F801F07C01F
- 03E0FFC7FCFFC7FC161D7F9C19>107 D<FF00FF001F001F001F001F001F001F001F001F001F00
- 1F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F00FFE0FFE00B1D7F
- 9C0E>I<FF0FC07E00FF31E18F001F40F207801F80FC07C01F80FC07C01F00F807C01F00F807C0
- 1F00F807C01F00F807C01F00F807C01F00F807C01F00F807C01F00F807C01F00F807C01F00F807
- C01F00F807C0FFE7FF3FF8FFE7FF3FF825127F9128>I<FF0FC0FF31E01F40F01F80F81F80F81F
- 00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F8FFE7FFFFE7FF18
- 127F911B>I<01FC000F07801C01C03C01E07800F07800F0F800F8F800F8F800F8F800F8F800F8
- F800F87800F07800F03C01E01E03C00F078001FC0015127F9118>I<FF3F80FFE1E01F80F01F00
- 781F007C1F003C1F003E1F003E1F003E1F003E1F003E1F003E1F003C1F007C1F00781F80F01FC1
- E01F3F001F00001F00001F00001F00001F00001F0000FFE000FFE000171A7F911B>I<03F0600F
- 0CE01E07E03C03E07C03E07803E0F803E0F803E0F803E0F803E0F803E0F803E07803E07C03E03C
- 03E01C07E00E0FE003F3E00003E00003E00003E00003E00003E00003E0001FFC001FFC161A7E91
- 19>I<FE3E00FE47001E8F801E8F801E8F801F07001F00001F00001F00001F00001F00001F0000
- 1F00001F00001F00001F0000FFF000FFF00011127F9114>I<1FD830786018E018E018F000FF80
- 7FE07FF01FF807FC007CC01CC01CE01CE018F830CFC00E127E9113>I<03000300030003000700
- 07000F000F003FFCFFFC1F001F001F001F001F001F001F001F001F001F0C1F0C1F0C1F0C0F0807
- 9803F00E1A7F9913>I<FF07F8FF07F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00
- F81F00F81F00F81F00F81F00F81F01F80F01F80786FF01F8FF18127F911B>I<FF8FF8FEFF8FF8
- FE1F03E0301F03E0301F83E0700F83F0600F86F06007C6F0C007CEF8C007EC79C003EC7D8003F8
- 3D8001F83F0001F83F0001F01F0000F01E0000E00E0000E00E001F127F9122>119
- D<FFC1FCFFC1FC1F00601F80E00F80C00FC0C007C18007C18003E30003E30001F70001F60000FE
- 0000FC0000FC00007800007800003000003000007000706000F86000F8C000F980007300003E00
- 00161A7F9119>121 D E /Fb 1 59 df<60F0F06004047C830C>58 D E
- /Fc 30 123 df<0001FC3C00060E67000C0EC7001C0DC6001C01C0003801C00038038000380380
- 00380380003803800070038007FFFFF800700700007007000070070000E0070000E00E0000E00E
- 0000E00E0000E00E0001C00E0001C01C0001C01C0001C01C0001C01C0003801C00038038000380
- 38000380380003003800070030000700700006006000C6606000E470C000C8618000703E000020
- 25819C19>11 D<0001FC000703000C03001C07001C030018000038000038000038000038000070
- 0007FFFC00701C00701C00701C00E 00FFF0007F70003E700
- 12197E9816>I<7F1FC0FFBFE07F1FC01C07001C07001C07001C07001C07001C07001C07001FFF
- 001FFF001FFF001C07001C07001C07001C07001C07001C07001C07001C07001C07007F1FC0FFBF
- E07F1FC013197F9816>I<FFFEFFFEFFFE03800380038003800380038003800380038003800380
- 03800380038003800380038003800380FFFEFFFEFFFE0F197D9816>I<07FE07FF07FE00380038
- 003800380038003800380038003800380038003800380038003800386038F038F0707FF07FE01F
- 8010197D9816>I<7F0FE0FF8FF07F0FE01C07801C0F001C0E001C1C001C3C001C78001CF0001C
- E0001DF0001FF0001FF8001F38001E1C001C1C001C0E001C0E001C07001C07001C03807F07E0FF
- 8FF07F07E01419809816>I<FFC000FFC000FFC0001C00001C00001C00001C00001C00001C0000
- 1C00001C00001C00001C00001C00001C00001C00001C00001C00401C00E01C00E01C00E01C00E0
- FFFFE0FFFFE0FFFFE013197F9816>I<FC07E0FE0FE0FE0FE03A0B803B1B803B1B803B1B803B1B
- 803B1B803BBB8039B38039B38039B38039B38039F38038E38038E3803803803803803803803803
- 80380380FE0FE0FE0FE0FE0FE013197F9816>I<7E1FC0FF3FE07F1FC01D07001D87001D87001D
- 87001DC7001DC7001CC7001CC7001CE7001CE7001CE7001C67001C67001C77001C77001C37001C
- 37001C37001C17007F1F00FF9F007F0F0013197F9816>I<1FFC003FFE007FFF00780F00F00780
- E00380E00380E00380E00380E00380E00380E00380E00380E00380E00380E00380E00380E00380
- E00380F00780F00780780F007FFF003FFE001FFC0011197E9816>I<7FF800FFFE007FFF001C0F
- 801C03801C03C01C01C01C01C01C01C01C03C01C03801C0F801FFF001FFE001FF8001C00001C00
- 001C00001C00001C00001C00001C00007F0000FF80007F000012197F9816>I<7FE000FFF8007F
- FC001C1E001C0F001C07001C07001C07001C07001C0F001C1E001FFC001FF8001FFC001C1C001C
- 0E001C0E001C0E001C0E001C0E201C0E701C0E707F07E0FF87E07F03C014197F9816>82
- D<07E3001FFF003FFF00781F00F00700E00700E00700E00000F000007800003F80001FF00007FC
- 0000FE00000F00000700000380000380600380E00380E00700F80F00FFFE00FFFC00C7F0001119
- 7E9816>I<7FFFE0FFFFE0FFFFE0E0E0E0E0E0E0E0E0E0E0E0E000E00000E00000E00000E00000
- E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00007FC000FFE0007
- FC0013197F9816>I<7F07F0FF8FF87F07F01C01C01C01C01C01C01C01C01C01C01C01C01C01C0
- 1C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C00E03800E038007070007FF00
- 03FE0000F8001519809816>I<FFF0FFF0FFF0E000E000E000E000E000E000E000E000E000E000
- E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000FFF0FFF0FFF00C
- 20789C16>91 D<C00000E00000E000007000007000003800003800001C00001C00000E00000E00
- 0007000007000003800003800001C00001C00000E00000E000007000007000003800003800001C
- 00001C00000E00000E0000070000070000038000038000018011207E9C16>I<FFF0FFF0FFF000
- 700070007000700070007000700070007000700070007000700070007000700070007000700070
- 007000700070007000700070FFF0FFF0FFF00C207F9C16>I<03000F803FE0FDF8F07840100D06
- 7C9816>I<FFFF80FFFF80FFFF8011037E7E16>I<1FE0003FF0007FF800783C00300E00000E0000
- 0E0003FE001FFE003E0E00700E00E00E00E00E00E00E00783E007FFFE03FE7E00F83E013127E91
- 16>97 D<7E0000FE00007E00000E00000E00000E00000E00000E3E000EFF000FFF800F83C00F00
- E00E00E00E00700E00700E00700E00700E00700E00700E00E00F01E00F83C00FFF800EFF00063C
- 001419809816>I<03F80FFC1FFE3C1E780C7000E000E000E000E000E000F000700778073E0E1F
- FC0FF803F010127D9116>I<003F00007F00003F0000070000070000070000070003C7000FF700
- 1FFF003C1F00780F00700700E00700E00700E00700E00700E00700E00700700F00700F003C1F00
- 1FFFE00FE7F007C7E014197F9816>I<03E00FF81FFC3C1E780E7007E007FFFFFFFFFFFFE000E0
- 00700778073C0F1FFE0FFC03F010127D9116>I<001F00007F8000FF8001E78001C30001C00001
- C0007FFF00FFFF00FFFF0001C00001C00001C00001C00001C00001C00001C00001C00001C00001
- C00001C00001C0003FFE007FFF003FFE0011197F9816>I<03E3C007F7E00FFFE01C1CC0380E00
- 380E00380E00380E00380E001C1C000FF8001FF0001BE0003800001800001FFC001FFF003FFF80
- 7803C0E000E0E000E0E000E0E000E07001C07C07C03FFF800FFE0003F800131C7F9116>I<7E00
- 00FE00007E00000E00000E00000E00000E00000E3C000EFE000FFF000F87800F03800E03800E03
- 800E03800E03800E03800E03800E03800E03800E03800E03807FC7F0FFE7F87FC7F01519809816
- >I<018003C003C0018000000000000000007FC07FC07FC001C001C001C001C001C001C001C001
- C001C001C001C001C07FFFFFFF7FFF101A7D9916>I<7E0000FE00007E00000E00000E00000E00
- 000E00000E7FE00E7FE00E7FE00E0F000E1E000E3C000E78000EF0000FF0000FF8000FBC000F1E
- 000E0E000E07000E07807F87F0FFCFF07F87F01419809816>107 D<FFC000FFC000FFC00001C0
- 0001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C0
- 0001C00001C00001C00001C00001C000FFFF80FFFF80FFFF8011197E9816>I<F9C380FFEFC0FF
- FFE03C78E03C78E03870E03870E03870E03870E03870E03870E03870E03870E03870E03870E0FE
- 7CF8FE7CF8FE3C781512809116>I<7E3C00FEFE007FFF000F87800F03800E03800E03800E0380
- 0E03800E03800E03800E03800E03800E03800E03807FC7F0FFE7F87FC7F01512809116>I<03E0
- 000FF8001FFC003C1E00780F00700700E00380E00380E00380E00380E00380F00780700700780F
- 003C1E001FFC000FF80003E00011127E9116>I<7E3E00FEFF007FFF800F83C00F00E00E00E00E
- 00700E00700E00700E00700E00700E00700E00E00F01E00F83C00FFF800EFF000E3C000E00000E
- 00000E00000E00000E00000E00007FC000FFE0007FC000141B809116>I<07C7000FE7001FF700
- 3C1F00700F00700F00E00700E00700E00700E00700E00700E00700700F00700F003C3F003FF700
- 1FE70007C700000700000700000700000700000700000700003FE0007FF0003FE0141B7E9116>
- I<FF0FC0FF3FE0FF7FE007F04007C0000780000780000700000700000700000700000700000700
- 00070000070000FFFC00FFFC00FFFC0013127F9116>I<0FEC3FFC7FFCF03CE01CE01C70007F80
- 1FF007F8003C600EE00EF00EF81EFFFCFFF8C7E00F127D9116>I<030000070000070000070000
- 0700007FFF00FFFF00FFFF00070000070000070000070000070000070000070000070100070380
- 07038007038007870003FE0001FC0000F80011177F9616>I<7E1F80FE3F807E1F800E03800E03
- 800E03800E03800E03800E03800E03800E03800E03800E03800E03800E0F800FFFF007FBF803E3
- F01512809116>I<7F1FC0FF1FE07F1FC01C07001E0F000E0E000E0E000E0E00071C00071C0007
- 1C00071C0003B80003B80003B80001F00001F00000E00013127F9116>I<FF1FE0FFBFE0FF1FE0
- 38038038038038038038038038E38019F30019F30019B3001DB7001DB7001DB7001DB7000F1E00
- 0F1E000F1E0013127F9116>I<7F1FC07F3FC07F1FC00F1C00073C0003B80003F00001F00000E0
- 0001E00001F00003B800073C00071C000E0E007F1FC0FF3FE07F1FC013127F9116>I<7F1FC0FF
- 9FE07F1FC01C07000E07000E0E000E0E00070E00071C00071C00039C00039C0003980001B80001
- B80000F00000F00000F00000E00000E00000E00001C00079C0007BC0007F80003F00003C000013
- 1B7F9116>I<3FFFC07FFFC07FFFC0700780700F00701E00003C0000780001F00003E000078000
- 0F00001E01C03C01C07801C0FFFFC0FFFFC0FFFFC012127F9116>I<001F80007F8000FF8001E0
- 0001C00001C00001C00001C00001C00001C00001C00001C00001C00003C0007F8000FF0000FF00
- 007F800003C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001E00000FF
- 80007F80001F8011207E9C16>I<E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0
- E0E0E0E0E0E0E00320779C16>I<7C0000FF0000FF800003C00001C00001C00001C00001C00001
- C00001C00001C00001C00001C00001E00000FF00007F80007F8000FF0001E00001C00001C00001
- C00001C00001C00001C00001C00001C00001C00003C000FF8000FF00007C000011207E9C16>I<
- 1C303F78FFF8F7E061C00D057C9816>I E /Fe 1 16 df<03C00FF01FF83FFC7FFE7FFEFFFFFF
- FFFFFFFFFF7FFE7FFE3FFC1FF80FF003C010107E9115>15 D E /Ff 81
- 125 df<007E1F0001C1B1800303E3C00703C3C00E03C1800E01C0000E01C0000E01C0000E01C0
- 000E01C0000E01C000FFFFFC000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01
- C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0007F
- 87FC001A1D809C18>11 D<007E0001C1800301800703C00E03C00E01800E00000E00000E00000E
- 00000E0000FFFFC00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E
- 01C00E01C00E01C00E01C00E01C00E01C07F87F8151D809C17>I<007FC001C1C00303C00703C0
- 0E01C00E01C00E01C00E01C00E01C00E01C00E01C0FFFFC00E01C00E01C00E01C00E01C00E01C0
- 0E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C07FCFF8151D80
- 9C17>I<003F07E00001C09C18000380F018000701F03C000E01E03C000E00E018000E00E00000
- 0E00E000000E00E000000E00E000000E00E00000FFFFFFFC000E00E01C000E00E01C000E00E01C
- 000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E0
- 1C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C007FC7FCFF80211D809C23>I<
- 60F0F0F0F0F0F0F060606060606060606060606060000000000060F0F060041E7C9D0C>33
- D<6060F0F0F8F86868080808080808101010102020404080800D0C7F9C15>I<0080008007E018
- 98308460824081C087C08FC08FC086E080F0807E803FC01FF00FF803FC00BE008E00876087F083
- F083E0838082408240842088189007E00080008010217E9E15>36 D<60F0F86808080810102040
- 80050C7C9C0C>39 D<004000800100020006000C000C0018001800300030007000600060006000
- E000E000E000E000E000E000E000E000E000E000E000E000600060006000700030003000180018
- 000C000C00060002000100008000400A2A7D 100000F0200000F04
- 00000F0E00000F1F00000F2F00000F2780000F4780000F83C0000F01E0000F01E0000F00F0000F
- 00F8000F0078000F003C000F003C000F001E000F001F000F001F80FFF07FF01C1C7E9B20>I<FF
- F8000F80000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F
- 00000F00000F00000F00000F00000F00080F00080F00080F00180F00180F00100F00300F00700F
- 01F0FFFFF0151C7E9B1A>I<FF8000FF800F8000F8000F8000F8000BC00178000BC00178000BC0
- 01780009E002780009E002780008F004780008F004780008F00478000878087800087808780008
- 78087800083C107800083C107800083C107800081E207800081E207800081E207800080F407800
- 080F40780008078078000807807800080780780008030078001C03007800FF8307FF80211C7E9B
- 26>I<FF007FC00F800E000F8004000BC0040009E0040009E0040008F0040008F8040008780400
- 083C0400083C0400081E0400080F0400080F0400080784000807C4000803C4000801E4000801E4
- 000800F40008007C0008007C0008003C0008003C0008001C0008000C001C000C00FF8004001A1C
- 7E9B1F>I<003F800000E0E0000380380007001C000E000E001C0007003C000780380003807800
- 03C0780003C0700001C0F00001E0F00001E0F00001E0F00001E0F00001E0F00001E0F00001E0F0
- 0001E0700001C0780003C0780003C0380003803C0007801C0007000E000E0007001C0003803800
- 00E0E000003F80001B1E7E9C20>I<FFFF800F00E00F00780F003C0F001C0F001E0F001E0F001E
- 0F001E0F001E0F001C0F003C0F00780F00E00FFF800F00000F00000F00000F00000F00000F0000
- 0F00000F00000F00000F00000F00000F0000FFF000171C7E9B1C>I<003F800000E0E000038038
- 0007001C000E000E001C0007003C00078038000380780003C0780003C0700001C0F00001E0F000
- 01E0F00001E0F00001E0F00001E0F00001E0F00001E0F00001E0700001C0780003C0780003C038
- 0003803C0E07801C1107000E208E0007205C0003A0780000F0E020003FE0200000602000003060
- 000038E000003FC000003FC000001F8000000F001B257E9C20>I<FFFF00000F01E0000F007800
- 0F003C000F001C000F001E000F001E000F001E000F001E000F001C000F003C000F0078000F01E0
- 000FFF00000F03C0000F00E0000F00F0000F0078000F0078000F0078000F0078000F0078000F00
- 78000F0078100F0078100F0038100F003C20FFF01C20000007C01C1D7E9B1F>I<07E0801C1980
- 300580700380600180E00180E00080E00080E00080F00000F800007C00007FC0003FF8001FFE00
- 07FF0000FF80000F800007C00003C00001C08001C08001C08001C0C00180C00180E00300D00200
- CC0C0083F800121E7E9C17>I<7FFFFFC0700F01C0600F00C0400F0040400F0040C00F0020800F
- 0020800F0020800F0020000F0000000F0000000F0000000F0000000F0000000F0000000F000000
- 0F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000
- 001F800003FFFC001B1C7F9B1E>I<FFF07FC00F000E000F0004000F0004000F0004000F000400
- 0F0004000F0004000F0004000F0004000F0004000F0004000F0004000F0004000F0004000F0004
- 000F0004000F0004000F0004000F0004000F0004000F0004000700080007800800038010000180
- 100000C020000070C000001F00001A1D7E9B1F>I<FFE00FF01F0003C00F0001800F0001000F80
- 0300078002000780020003C0040003C0040003C0040001E0080001E0080001F0080000F0100000
- F0100000F830000078200000782000003C4000003C4000003C4000001E8000001E8000001F8000
- 000F0000000F00000006000000060000000600001C1D7F9B1F>I<FFE0FFE0FF1F001F003C1E00
- 1E00180F001F00100F001F00100F001F001007801F00200780278020078027802003C027804003
- C043C04003C043C04003E043C04001E081E08001E081E08001E081E08000F100F10000F100F100
- 00F100F100007900FA00007A007A00007A007A00003E007C00003C003C00003C003C00003C003C
- 00001800180000180018000018001800281D7F9B2B>I<7FF0FFC00FC03E000780180003C01800
- 03E0100001E0200001F0600000F0400000788000007D8000003D0000001E0000001F0000000F00
- 00000F8000000F80000013C0000023E0000021E0000041F00000C0F8000080780001007C000300
- 3C0002001E0006001F001F003F80FFC0FFF01C1C7F9B1F>I<FFF007FC0F8001E00780008007C0
- 018003C0010003E0020001F0020000F0040000F8040000780800007C1800003C1000001E200000
- 1F2000000F4000000FC00000078000000780000007800000078000000780000007800000078000
- 00078000000780000007800000078000007FF8001E1C809B1F>I<FEFEC0C0C0C0C0C0C0C0C0C0
- C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0FEFE07297C9E0C>91
- D<08081010202040404040808080808080B0B0F8F8787830300D0C7A9C15>I<FEFE0606060606
- 0606060606060606060606060606060606060606060606060606060606060606FEFE0729809E0C
- >I<1FC000307000783800781C00301C00001C00001C0001FC000F1C00381C00701C00601C00E0
- 1C40E01C40E01C40603C40304E801F870012127E9115>97 D<FC00001C00001C00001C00001C00
- 001C00001C00001C00001C00001C00001C00001C7C001D86001E03001C01801C01C01C00C01C00
- E01C00E01C00E01C00E01C00E01C00E01C00C01C01C01C01801E030019060010F800131D7F9C17
- >I<07E00C301878307870306000E000E000E000E000E000E00060007004300418080C3007C00E
- 127E9112>I<003F00000700000700000700000700000700000700000700000700000700000700
- 03E7000C1700180F00300700700700600700E00700E00700E00700E00700E00700E00700600700
- 700700300700180F000C370007C7E0131D7E9C17>I<03E00C301818300C700E6006E006FFFEE0
- 00E000E000E00060007002300218040C1803E00F127F9112>I<00F8018C071E061E0E0C0E000E
- 000E000E000E000E00FFE00E000E000E000E000E000E000E000E000E000E000E000E000E000E00
- 0E000E007FE00F1D809C0D>I<00038003C4C00C38C01C3880181800381C00381C00381C00381C
- 001818001C38000C300013C0001000003000001800001FF8001FFF001FFF803003806001C0C000
- C0C000C0C000C06001803003001C0E0007F800121C7F9215>I<FC00001C00001C00001C00001C
- 00001C00001C00001C00001C00001C00001C00001C7C001C87001D03001E03801C03801C03801C
- 03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C0380FF9FF0141D7F9C
- 17>I<18003C003C0018000000000000000000000000000000FC001C001C001C001C001C001C00
- 1C001C001C001C001C001C001C001C001C001C00FF80091D7F9C0C>I<00C001E001E000C00000
- 0000000000000000000000000FE000E000E000E000E000E000E000E000E000E000E000E000E000
- E000E000E000E000E000E000E000E060E0F0C0F1C061803E000B25839C0D>I<FC00001C00001C
- 00001C00001C00001C00001C00001C00001C00001C00001C00001C3FC01C0F001C0C001C08001C
- 10001C20001C40001CE0001DE0001E70001C78001C38001C3C001C1C001C0E001C0F001C0F80FF
- 9FE0131D7F9C16>I<FC001C001C001C001C001C001C001C001C001C001C001C001C001C001C00
- 1C001C001C001C001C001C001C001C001C001C001C001C001C00FF80091D7F9C0C>I<FC7E07E0
- 001C838838001D019018001E01E01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C0
- 1C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01
- C01C00FF8FF8FF8021127F9124>I<FC7C001C87001D03001E03801C03801C03801C03801C0380
- 1C03801C03801C03801C03801C03801C03801C03801C03801C0380FF9FF014127F9117>I<03F0
- 000E1C00180600300300700380600180E001C0E001C0E001C0E001C0E001C0E001C06001807003
- 803003001806000E1C0003F00012127F9115>I<FC7C001D86001E03001C01801C01C01C00C01C
- 00E01C00E01C00E01C00E01C00E01C00E01C01C01C01C01C01801E03001D06001CF8001C00001C
- 00001C00001C00001C00001C00001C0000FF8000131A7F9117>I<03C1000C3300180B00300F00
- 700700700700E00700E00700E00700E00700E00700E00700600700700700300F00180F000C3700
- 07C700000700000700000700000700000700000700000700003FE0131A7E9116>I<FCE01D301E
- 781E781C301C001C001C001C001C001C001C001C001C001C001C001C00FFC00D127F9110>I<1F
- 9030704030C010C010E010F8007F803FE00FF000F880388018C018C018E010D0608FC00D127F91
- 10>I<04000400040004000C000C001C003C00FFE01C001C001C001C001C001C001C001C001C00
- 1C101C101C101C101C100C100E2003C00C1A7F9910>I<FC1F801C03801C03801C03801C03801C
- 03801C03801C03801C03801C03801C03801C03801C03801C03801C07800C07800E1B8003E3F014
- 127F9117>I<FF07E03C03801C01001C01000E02000E0200070400070400070400038800038800
- 03D80001D00001D00000E00000E00000E00000400013127F9116>I<FF3FCFE03C0F03801C0701
- 801C0701001C0B01000E0B82000E0B82000E1182000711C4000711C4000720C40003A0E80003A0
- E80003C0680001C0700001C0700001803000008020001B127F911E>I<7F8FF00F03800F030007
- 020003840001C80001D80000F00000700000780000F800009C00010E00020E000607000403801E
- 07C0FF0FF81512809116>I<FF07E03C03801C01001C01000E02000E0200070400070400070400
- 03880003880003D80001D00001D00000E00000E00000E000004000004000008000008000F08000
- F10000F300006600003C0000131A7F9116>I<7FFC70386038407040F040E041C003C003800700
- 0F040E041C043C0C380870087038FFF80E127F9112>I<FFFFFFFFFF802901808B2A>124
- D E /Fg 34 90 df<7070F06004047C830C>46 D<00000400000C000018000018000030000030
- 0000600000600000C00000C0000180000300000300000600000600000C00000C00001800001800
- 00300000300000600000600000C00000C0000180000180000300000300000600000C00000C0000
- 180000180000300000300000600000600000C00000C0000080000016297F9E15>I<00F800038E
- 000606000C03000C0300180380380380380380300380700380700380700380700380E00700E007
- 00E00700E00700E00700E00600E00E00C00E00C00E00C00C00C01C00C0180060300060600030C0
- 001F0000111D7C9B15>I<0018007003F00C7000700070007000E000E000E000E000E000E001C0
- 01C001C001C001C001C003800380038003800380038007000780FFF80D1C7C9B15>I<007E0001
- 83800201C00400E00400E00F00E00F00E01F00E01F00E00E00E00001E00001C000038000038000
- 0700000E00001C0000380000600000C0000180000300800600800801001001003FFF007FFE00FF
- FE00131C7E9B15>I<007C000187000203800403800F03C00F03C00F03C00E0380000380000700
- 000600000C0000380003F000001C00000E00000E00000F00000F00000F00700F00F80F00F80F00
- F00E00E01E00801C004038003070000FC000121D7D9B15>I<0000C00001800003800003800007
- 80000B8000138000270000670000C700008700010700020700040E00080E00180E00100E00200E
- 00400E00FFFFC0001C00001C00001C00001C00001C00003800003C0003FF80121C7E9B15>I<03
- 01C003FF8003FE0007FC0004000004000004000004000004000008000008F8000B0C000C0E0008
- 0700080700000700000780000780000780700F00F00F00F00F00F00E00801E00801C0040380040
- 300030E0000F8000121D7D9B15>I<003E0000E1000180800303800607800C07801C0700180000
- 38000030000071F000761800780C00E80E00F00600F00600E00700E00700E00700E00E00C00E00
- C00E00C00E00C01C00E0180060380060300030C0000F8000111D7C9B15>I<1000003FFFC03FFF
- C03FFF8060010040020040040080080000080000100000200000400000C0000080000180000180
- 000300000700000700000F00000E00000E00001E00001E00001E00003C00003C00003C00001800
- 00121D7B9B15>I<007C000183000201800601800C00C00C00C00C00C01C01801C01801E03000F
- 86000FCC0007F00003F80003FC000C7E00183F00300F00600700600300C00300C00300C00300C0
- 0200C006006004006018003830000FC000121D7D9B15>I<00F8000304000606000C03001C0300
- 380300380380300380700380700380700380700380700780700700700F00300F00181700082700
- 07CE00000E00000C00001C00601800F03800F03000E0600080C0004380003E0000111D7C9B15>
- I<000020000000300000007000000070000000F0000000F0000001F00000037800000278000006
- 780000047800000C780000087C0000183C0000103C0000203C0000203C0000403C0000403E0000
- FFFE0000801E0001001E0001001E0002001E0002000F0004000F0004000F001E001F00FF80FFF0
- 1C1D7F9C1F>65 D<0FFFFC0000F8070000F0038000F003C000F001C000F001E000F001E001E001
- C001E003C001E003C001E0078001E00F0001E03C0003FFF80003C01E0003C00F0003C0078003C0
- 078003C007800780078007800780078007800780078007800F0007801E000F003C000F007800FF
- FFE0001B1C7E9B1D>I<0007F010001C0C300070026000C001E0038000E0070000E00E0000600E
- 0000601C0000403C00004038000040780000007800000078000000F0000000F0000000F0000000
- F0000000F0000000F0000080F0000100700001007000010038000200380004001C0004000C0018
- 00060020000380C000007F00001C1E7C9C1E>I<0FFFFC0000F8078000F001C000F000E000F000
- 7000F0007000F0007801E0003801E0003801E0003801E0003801E0003C01E0003803C0003803C0
- 007803C0007803C0007803C0007003C000F0078000E0078000E0078001C0078003800780078007
- 800E000F001C000F007000FFFFC0001E1C7E9B20>I<0FFFFFE000F801E000F000E000F0004000
- F0004000F0004000F0004001E0004001E0404001E0400001E0400001E0C00001E1C00003FF8000
- 03C1800003C0800003C0800003C0800003C0808007800080078000800780010007800100078003
- 00078006000F000E000F003E00FFFFFC001B1C7E9B1C>I<0FFFFFC000F803C000F001C000F000
- 8000F0008000F0008000F0008001E0008001E0408001E0400001E0400001E0C00001E1C00003FF
- 800003C1800003C0800003C0800003C0800003C080000780000007800000078000000780000007
- 800000078000000F0000000F800000FFF800001A1C7E9B1B>I<0007F010001C0C300070026000
- C001E0038000E0070000E00E0000600E0000601C0000403C000040380000407800000078000000
- 78000000F0000000F0000000F0000000F000FFF0F0000F80F0000780F0000F0070000F0070000F
- 0038000F0038000F001C001F000C001E000600660003818200007E00001C1E7C9C21>I<0FFF9F
- FE00F803E000F003C000F003C000F003C000F003C000F003C001E0078001E0078001E0078001E0
- 078001E0078001E0078003FFFF0003C00F0003C00F0003C00F0003C00F0003C00F0007801E0007
- 801E0007801E0007801E0007801E0007801E000F003C000F803E00FFF3FFC01F1C7E9B1F>I<0F
- FF8000F80000F00000F00000F00000F00000F00001E00001E00001E00001E00001E00001E00003
- C00003C00003C00003C00003C00003C0000780000780000780000780000780000780000F00000F
- 8000FFF800111C7F9B0F>I<0FFF83FE00F800F800F000E000F0008000F0010000F0020000F004
- 0001E0080001E0100001E0400001E0800001E1C00001E3C00003C5E00003C9E00003D1F00003E0
- F00003C0F00003C078000780780007803C0007803C0007801E0007801E0007800F000F000F000F
- 801F80FFF07FF01F1C7E9B20>75 D<0FFFC000F80000F00000F00000F00000F00000F00001E000
- 01E00001E00001E00001E00001E00003C00003C00003C00003C00003C00003C004078004078004
- 0780040780080780080780180F00380F00F0FFFFF0161C7E9B1A>I<0FF80007FC00F8000FC000
- BC000F8000BC00178000BC00178000BC00278000BC002780011E004F00011E004F00011E008F00
- 011E008F00011E010F00010F010F00020F021E00020F021E00020F041E00020F041E000207881E
- 000207901E000407903C000407A03C000407A03C000407C03C000403C03C000403803C000C0380
- 78001E03007C00FF8307FF80261C7E9B26>I<0FF807FE00F800F000FC006000BC004000BE0040
- 009E0040009E0040010F0080010F008001078080010780800103C0800103C0800201E1000201E1
- 000200F1000200F1000200F9000200790004007E0004003E0004003E0004001E0004001E000400
- 0E000C000C001E000400FF8004001F1C7E9B1F>I<0007F00000381C0000E00E0001C003000380
- 0380070001C00E0001C01E0001E01C0000E03C0000E0380000E0780000F0780000F0780000F0F0
- 0001E0F00001E0F00001E0F00001E0F00003C0F00003C0F00003C0700007807000070078000F00
- 38001E003C001C001C0038000E00E0000383800000FE00001C1E7C9C20>I<0FFFFC0000F80F00
- 00F0038000F003C000F001C000F001C000F001C001E003C001E003C001E003C001E0038001E007
- 0001E00E0003C03C0003FFE00003C0000003C0000003C0000003C0000007800000078000000780
- 00000780000007800000078000000F0000000F800000FFF000001A1C7E9B1C>I<0FFFF80000F8
- 0E0000F0078000F003C000F001C000F001E000F001E001E003C001E003C001E0038001E0070001
- E00E0001E03C0003FFE00003C0700003C0380003C03C0003C01C0003C01E0007803C0007803C00
- 07803C0007803C0007803C0007803C080F003C100F801C10FFF01C20000007C01D1D7E9B1F>82
- D<003F0400C0CC0180380300380600180E00180E00180E00181E00101E00001F00000F80000FF8
- 0007FF0003FF8001FFC0003FE00003E00001E00000E00000E04000E04000E04000E04000C06001
- C0E00180F00300CC0E0083F800161E7E9C17>I<1FFFFFF03C07C0F03007803020078020600780
- 204007802040078020400F0020800F0020000F0000000F0000000F0000000F0000001E0000001E
- 0000001E0000001E0000001E0000001E0000003C0000003C0000003C0000003C0000003C000000
- 3C000000780000007C00001FFFE0001C1C7C9B1E>I<FFF87FE00F800F000F0006000F0004000F
- 0004000F0004000F0004001E0008001E0008001E0008001E0008001E0008001E0008003C001000
- 3C0010003C0010003C0010003C0010003C00100078002000780020007800200038004000380040
- 00380080001C0100000C020000070C000001F000001B1D7A9B1F>I<FFF00FF81F8003C00F0001
- 800F0001000F0002000780020007800400078004000780080007C0080003C0100003C0100003C0
- 200003C0200003E0400001E0400001E0800001E1800001E1000001F2000000F2000000F4000000
- F4000000F8000000F80000007000000070000000600000006000001D1D7B9B1F>I<FFF0FFE0FF
- 801F001F003C000F001F0018000F000F0010000F001F0010000F001F0020000F002F0020000F00
- 2F0060000F804F00400007804F8040000780878080000780878080000781078100000781078100
- 0007820782000007C20782000003C407C4000003C403C4000003C803C8000003C803C8000003D8
- 03D0000003D003D0000003F003E0000001E003E0000001E001C0000001C001C0000001C0018000
- 00018001800000018001800000291D7B9B2B>I<FFF007F81F8003C00F0001800F800100078002
- 0007C0040003C0080003E0080003E0100001E0200001F0400000F0400000F8800000790000007A
- 0000007E0000003C0000003C000000380000007800000078000000780000007800000078000000
- 70000000F0000000F800000FFF00001D1C7B9B1F>89 D E /Fh 58 123
- df<000FFF00007FFF0001F83F0003E03F0007C03F000F803F000F801F000F801F000F801F000F
- 801F000F801F000F801F000F801F00FFFFFF00FFFFFF000F801F000F801F000F801F000F801F00
- 0F801F000F801F000F801F000F801F000F801F000F801F000F801F000F801F000F801F000F801F
- 000F801F000F801F000F801F000F801F007FF0FFE07FF0FFE01B237FA21F>13
- D<387CFEFFFF7F3B03030706060C1C18702008117C8610>44 D<FFFCFFFCFFFCFFFC0E047F8C13
- >I<387CFEFEFE7C3807077C8610>I<0000180000380000380000700000700000E00000E00000E0
- 0001C00001C0000380000380000380000700000700000700000E00000E00001C00001C00001C00
- 00380000380000700000700000700000E00000E00001C00001C00001C000038000038000070000
- 0700000700000E00000E00000E00001C00001C0000380000380000380000700000700000E00000
- E00000C0000015317DA41C>I<00FE0007FFC00F83E01F01F03E00F83E00F87C007C7C007C7C00
- 7CFC007CFC007EFC007EFC007EFC007EFC007EFC007EFC007EFC007EFC007EFC007EFC007EFC00
- 7EFC007E7C007C7C007C7C007C3E00F83E00F81F01F00F83E007FFC000FE0017207E9F1C>I<00
- 180000780001F800FFF800FFF80001F80001F80001F80001F80001F80001F80001F80001F80001
- F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001
- F80001F80001F80001F8007FFFE07FFFE013207C9F1C>I<03FC000FFF003C1FC07007E07C07F0
- FE03F0FE03F8FE03F8FE01F87C01F83803F80003F80003F00003F00007E00007C0000F80001F00
- 003E0000380000700000E01801C0180380180700180E00380FFFF01FFFF FFE000FFFFE00007
- F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F00000
- 07F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F000
- 1807F0001807F0001807F0001807F0003807F0003807F0007007F0007007F000F007F001F007F0
- 07F0FFFFFFF0FFFFFFF01D227EA122>76 D<FFF000000FFFFFF800001FFF07F800001FE006FC00
- 0037E006FC000037E006FC000037E0067E000067E0067E000067E0063F0000C7E0063F0000C7E0
- 061F800187E0061F800187E0060FC00307E0060FC00307E0060FC00307E00607E00607E00607E0
- 0607E00603F00C07E00603F00C07E00601F81807E00601F81807E00601F81807E00600FC3007E0
- 0600FC3007E006007E6007E006007E6007E006003FC007E006003FC007E006001F8007E006001F
- 8007E006001F8007E006000F0007E0FFF00F00FFFFFFF00600FFFF30227EA135>I<FFF8001FFE
- FFFC001FFE07FC0000C007FE0000C006FF0000C0067F8000C0063FC000C0061FE000C0060FE000
- C0060FF000C00607F800C00603FC00C00601FE00C00600FE00C00600FF00C006007F80C006003F
- C0C006001FE0C006000FF0C0060007F0C0060007F8C0060003FCC0060001FEC0060000FFC00600
- 007FC00600007FC00600003FC00600001FC00600000FC006000007C006000003C006000003C0FF
- F00001C0FFF00000C027227EA12C>I<0007FC0000003FFF800000FC07E00003F001F80007E000
- FC000FC0007E001F80003F001F80003F003F00001F803F00001F807F00001FC07E00000FC07E00
- 000FC0FE00000FE0FE00000FE0FE00000FE0FE00000FE0FE00000FE0FE00000FE0FE00000FE0FE
- 00000FE0FE00000FE07E00000FC07F00001FC07F00001FC03F00001F803F80003F801F80003F00
- 0FC0007E0007E000FC0003F001F80000FC07E000003FFF80000007FC000023227DA12A>I<FFFF
- FF00FFFFFFE007F007F007F001FC07F000FC07F0007E07F0007E07F0007F07F0007F07F0007F07
- F0007F07F0007F07F0007E07F0007E07F000FC07F001FC07F007F007FFFFE007FFFF0007F00000
- 07F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F000
- 0007F0000007F00000FFFF8000FFFF800020227EA126>I<FFFFFE0000FFFFFFC00007F007F000
- 07F001F80007F000FC0007F0007E0007F0007F0007F0007F0007F0007F0007F0007F0007F0007F
- 0007F0007F0007F0007E0007F000FC0007F001F80007F007F00007FFFFC00007FFFF800007F00F
- E00007F007F00007F003F80007F001FC0007F001FC0007F001FC0007F001FC0007F001FC0007F0
- 01FC0007F001FC0007F001FC0007F001FC0607F000FE0607F000FF0CFFFF803FF8FFFF800FF027
- 227EA12A>82 D<01FC0407FF8C1F03FC3C007C7C003C78001C78001CF8000CF8000CFC000CFC00
- 00FF0000FFE0007FFF007FFFC03FFFF01FFFF80FFFFC03FFFE003FFE0003FF00007F00003F0000
- 3FC0001FC0001FC0001FE0001EE0001EF0003CFC003CFF00F8C7FFE080FF8018227DA11F>I<7F
- FFFFFF807FFFFFFF807E03F80F807803F807807003F803806003F80180E003F801C0E003F801C0
- C003F800C0C003F800C0C003F800C0C003F800C00003F800000003F800000003F800000003F800
- 000003F800000003F800000003F800000003F800000003F800000003F800000003F800000003F8
- 00000003F800000003F800000003F800000003F800000003F800000003F800000003F800000003
- F8000003FFFFF80003FFFFF80022227EA127>I<FFFF803FFCFFFF803FFC07F000018007F00001
- 8007F000018007F000018007F000018007F000018007F000018007F000018007F000018007F000
- 018007F000018007F000018007F000018007F000018007F000018007F000018007F000018007F0
- 00018007F000018007F000018007F000018007F000018007F000018007F000018003F000030003
- F800030001F800060000FC000E00007E001C00003F80F800000FFFE0000001FF000026227EA12B
- >I<FFFF0FFFF01FFEFFFF0FFFF01FFE0FF000FF0000E007F0007F0000C007F0007F0000C003F8
- 007F80018003F8003F80018003FC003F80038001FC003FC0030001FC003FC0030000FE007FE006
- 0000FE006FE0060000FF006FE00600007F00C7F00C00007F00C7F00C00007F80C7F81C00003F81
- 83F81800003F8183F81800001FC383FC3000001FC301FC3000001FE301FC3000000FE600FE6000
- 000FE600FE6000000FF600FFE0000007FC007FC0000007FC007FC0000003FC007F80000003F800
- 3F80000003F8003F80000001F0001F00000001F0001F00000000F0001E00000000E0000E000000
- 00E0000E000037227FA13A>87 D<FFFF800FFEFFFF800FFE07F80000C007F80001C003FC000180
- 01FE00030001FE00070000FF00060000FF000C00007F801C00003FC01800003FC03000001FE070
- 00000FF06000000FF0E0000007F8C0000003FD80000003FF80000001FF00000001FE00000000FE
- 00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000
- FE00000000FE00000000FE00000000FE0000001FFFF000001FFFF00027227FA12A>89
- D<07FC001FFF803F07C03F03E03F01E03F01F01E01F00001F00001F0003FF003FDF01FC1F03F01
- F07E01F0FC01F0FC01F0FC01F0FC01F07E02F07E0CF81FF87F07E03F18167E951B>97
- D<FF000000FF0000001F0000001F0000001F0000001F0000001F0000001F0000001F0000001F00
- 00001F0000001F0000001F0000001F0FE0001F3FF8001FF07C001F801E001F001F001F000F801F
- 000F801F000FC01F000FC01F000FC01F000FC01F000FC01F000FC01F000FC01F000FC01F000F80
- 1F001F801F801F001FC03E001EE07C001C3FF800180FC0001A237EA21F>I<00FF8007FFE00F83
- F01F03F03E03F07E03F07C01E07C0000FC0000FC0000FC0000FC0000FC0000FC00007C00007E00
- 007E00003E00301F00600FC0E007FF8000FE0014167E9519>I<0001FE000001FE0000003E0000
- 003E0000003E0000003E0000003E0000003E0000003E0000003E0000003E0000003E0000003E00
- 01FC3E0007FFBE000F81FE001F007E003E003E007E003E007C003E00FC003E00FC003E00FC003E
- 00FC003E00FC003E00FC003E00FC003E00FC003E007C003E007C003E003E007E001E00FE000F83
- BE0007FF3FC001FC3FC01A237EA21F>I<00FE0007FF800F87C01E01E03E01F07C00F07C00F8FC
- 00F8FC00F8FFFFF8FFFFF8FC0000FC0000FC00007C00007C00007E00003E00181F00300FC07003
- FFC000FF0015167E951A>I<003F8000FFC001E3E003C7E007C7E00F87E00F83C00F80000F8000
- 0F80000F80000F80000F8000FFFC00FFFC000F80000F80000F80000F80000F80000F80000F8000
- 0F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80007FF8007FF800
- 13237FA211>I<03FC1E0FFF7F1F0F8F3E07CF3C03C07C03E07C03E07C03E07C03E07C03E03C03
- C03E07C01F0F801FFF0013FC003000003000003800003FFF801FFFF00FFFF81FFFFC3800FC7000
- 3EF0001EF0001EF0001EF0001E78003C7C007C3F01F80FFFE001FF0018217E951C>I<FF000000
- FF0000001F0000001F0000001F0000001F0000001F0000001F0000001F0000001F0000001F0000
- 001F0000001F0000001F07E0001F1FF8001F307C001F403C001F803E001F803E001F003E001F00
- 3E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F
- 003E001F003E001F003E00FFE1FFC0FFE1FFC01A237EA21F>I<1C003E007F007F007F003E001C
- 000000000000000000000000000000FF00FF001F001F001F001F001F001F001F001F001F001F00
- 1F001F001F001F001F001F001F001F00FFE0FFE00B247EA310>I<FF000000FF0000001F000000
- 1F0000001F0000001F0000001F0000001F0000001F0000001F0000001F0000001F0000001F0000
- 001F00FF801F00FF801F0038001F0060001F01C0001F0380001F0700001F0E00001F1C00001F7E
- 00001FFF00001FCF00001F0F80001F07C0001F03E0001F01E0001F01F0001F00F8001F007C001F
- 003C00FFE0FFC0FFE0FFC01A237EA21E>107 D<FF00FF001F001F001F001F001F001F001F001F
- 001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F00
- 1F001F001F001F00FFE0FFE00B237EA210>I<FF07F007F000FF1FFC1FFC001F303E303E001F40
- 3E403E001F801F801F001F801F801F001F001F001F001F001F001F001F001F001F001F001F001F
- 001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F00
- 1F001F001F001F001F001F001F001F001F001F001F00FFE0FFE0FFE0FFE0FFE0FFE02B167E9530
- >I<FF07E000FF1FF8001F307C001F403C001F803E001F803E001F003E001F003E001F003E001F
- 003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E00
- 1F003E00FFE1FFC0FFE1FFC01A167E951F>I<00FE0007FFC00F83E01E00F03E00F87C007C7C00
- 7C7C007CFC007EFC007EFC007EFC007EFC007EFC007EFC007E7C007C7C007C3E00F81F01F00F83
- E007FFC000FE0017167E951C>I<FF0FE000FF3FF8001FF07C001F803E001F001F001F001F801F
- 001F801F000FC01F000FC01F000FC01F000FC01F000FC01F000FC01F000FC01F000FC01F001F80
- 1F001F801F803F001FC03E001FE0FC001F3FF8001F0FC0001F0000001F0000001F0000001F0000
- 001F0000001F0000001F0000001F000000FFE00000FFE000001A207E951F>I<FE1F00FE3FC01E
- 67E01EC7E01E87E01E87E01F83C01F00001F00001F00001F00001F00001F00001F00001F00001F
- 00001F00001F00001F00001F0000FFF000FFF00013167E9517>114 D<0FF3003FFF00781F0060
- 0700E00300E00300F00300FC00007FE0007FF8003FFE000FFF0001FF00000F80C00780C00380E0
- 0380E00380F00700FC0E00EFFC00C7F00011167E9516>I<018000018000018000018000038000
- 0380000780000780000F80003F8000FFFF00FFFF000F80000F80000F80000F80000F80000F8000
- 0F80000F80000F80000F80000F80000F81800F81800F81800F81800F81800F830007C30003FE00
- 00F80011207F9F16>I<FF01FE00FF01FE001F003E001F003E001F003E001F003E001F003E001F
- 003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E00
- 1F007E001F00FE000F81BE0007FF3FC001FC3FC01A167E951F>I<FFE01FE0FFE01FE00F800600
- 0F8006000FC00E0007C00C0007E01C0003E0180003E0180001F0300001F0300000F8600000F860
- 00007CC000007CC000007FC000003F8000003F8000001F0000001F0000000E0000000E00001B16
- 7F951E>I<FFE7FF07F8FFE7FF07F81F007800C00F807801800F807C01800F807C018007C07E03
- 0007C0DE030007E0DE070003E0DF060003E18F060001F18F0C0001F38F8C0001FB079C0000FB07
- D80000FE03D800007E03F000007E03F000007C01F000003C01E000003800E000001800C0002516
- 7F9528>I<FFE07FC0FFE07FC00F801C0007C0380003E0700003F0600001F8C00000F98000007F
- 8000003F0000001F0000001F8000003FC0000037C0000063E00000C1F00001C0F8000380FC0007
- 007E000E003E00FF80FFE0FF80FFE01B167F951E>I<FFE01FE0FFE01FE00F8006000F8006000F
- C00E0007C00C0007E01C0003E0180003E0180001F0300001F0300000F8600000F86000007CC000
- 007CC000007FC000003F8000003F8000001F0000001F0000000E0000000E0000000C0000000C00
- 000018000078180000FC380000FC300000FC60000069C000007F8000001F0000001B207F951E>
- I<7FFFF07FFFF07C03E07007C0600FC0E01F80C01F00C03E00C07E0000FC0000F80001F00003F0
- 3007E03007C0300F80701F80703F00603E00E07C03E0FFFFE0FFFFE014167E9519>I
- E /Fi 51 122 df<1C003E007F00FF80FF80FF807F003E001C0009097B8813>46
- D<00000300000007800000078000000F8000000F0000000F0000001F0000001E0000003E000000
- 3C0000003C0000007C0000007800000078000000F8000000F0000001F0000001E0000001E00000
- 03E0000003C0000003C0000007C00000078000000F8000000F0000000F0000001F0000001E0000
- 003E0000003C0000003C0000007C0000007800000078000000F8000000F0000001F0000001E000
- 0001E0000003E0000003C0000003C0000007C00000078000000F8000000F0000000F0000001F00
- 00001E0000001E0000003E0000003C0000007C0000007800000078000000F8000000F0000000F0
- 00000060000000193C7CAC22>I<003F800001FFF00007E0FC000FC07E001F803F001F803F003F
- 001F803F001F807F001FC07F001FC07F001FC07F001FC0FF001FE0FF001FE0FF001FE0FF001FE0
- FF001FE0FF001FE0FF001FE0FF001FE0FF001FE0FF001FE0FF001FE0FF001FE0FF001FE0FF001F
- E0FF001FE07F001FC07F001FC07F001FC07F001FC03F001F803F001F801F803F001F803F000FC0
- 7E0007E0FC0001FFF000003F80001B277DA622>I<000E00001E00007E0007FE00FFFE00FFFE00
- F8FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE00
- 00FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE00
- 00FE0000FE0000FE0000FE007FFFFE7FFFFE7FFFFE17277BA622>I<00FF800003FFF0000FFFFC
- 001F03FE003800FF007C007F80FE003FC0FF003FC0FF003FE0FF001FE0FF001FE07E001FE03C00
- 3FE000003FE000003FC000003FC000007F8000007F000000FE000000FC000001F8000003F00000
- 03E00000078000000F0000001E0000003C00E0007000E000E000E001C001C0038001C0070001C0
- 0FFFFFC01FFFFFC03FFFFFC07FFFFFC0FFFFFF80FFFFFF80FFFFFF801B277DA622>I<007F8000
- 03FFF00007FFFC000F81FE001F00FF003F80FF003F807F803F807F803F807F801F807F800F007F
- 800000FF000000FF000000FE000001FC000001F8000007F00000FFC00000FFF0000001FC000000
- 7E0000007F0000007F8000003FC000003FC000003FE000003FE03C003FE07E003FE0FF003FE0FF
- 003FE0FF003FC0FF007FC07E007F807C007F003F01FE001FFFFC0007FFF00000FF80001B277DA6
- 22>I<00000E0000001E0000003E0000007E000000FE000000FE000001FE000003FE0000077E00
- 000E7E00000E7E00001C7E0000387E0000707E0000E07E0000E07E0001C07E0003807E0007007E
- 000E007E000E007E001C007E0038007E0070007E00E0007E00FFFFFFF8FFFFFFF8FFFFFFF80000
- FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE00007FFFF8007FFFF800
- 7FFFF81D277EA622>I<0C0003000F803F000FFFFE000FFFFC000FFFF8000FFFF0000FFFE0000F
- FFC0000FFE00000E0000000E0000000E0000000E0000000E0000000E0000000E7FC0000FFFF800
- 0F80FC000E003E000C003F0000001F8000001FC000001FC000001FE000001FE018001FE07C001F
- E0FE001FE0FE001FE0FE001FE0FE001FC0FC001FC078003F8078003F803C007F001F01FE000FFF
- F80003FFF00000FF80001B277DA622>I<0007F000003FFC0000FFFE0001FC0F0003F01F8007E0
- 3F800FC03F801FC03F801F803F803F801F003F8000007F0000007F0000007F000000FF000000FF
- 0FC000FF3FF800FF707C00FFC03E00FFC03F00FF801F80FF801FC0FF001FC0FF001FE0FF001FE0
- FF001FE07F001FE07F001FE07F001FE07F001FE03F001FE03F001FC01F801FC01F803F800FC03F
- 0007E07E0003FFFC0000FFF000003FC0001B277DA622>I<380000003E0000003FFFFFF03FFFFF
- F03FFFFFF07FFFFFE07FFFFFC07FFFFF807FFFFF0070000E0070000E0070001C00E0003800E000
- 7000E000E0000000E0000001C000000380000007800000078000000F0000000F0000001F000000
- 1F0000003F0000003E0000003E0000007E0000007E0000007E0000007E000000FE000000FE0000
- 00FE000000FE000000FE000000FE000000FE000000FE0000007C0000003800001C297CA822>I<
- 003FC00001FFF00003FFFC0007C07E000F003F001E001F001E000F803E000F803E000F803F000F
- 803F000F803FC00F003FF01F001FFC1E001FFE3C000FFFF80007FFE00003FFF80001FFFC0001FF
- FE0007FFFF000F0FFF801E03FFC03C01FFC07C007FE078001FE0F80007E0F80007E0F80003E0F8
- 0003E0F80003E0F80003C07C0003C07C0007803F000F001FC03E000FFFFC0003FFF800007FC000
- 1B277DA622>I<007F800001FFF00007FFF8000FE0FC001F807E003F803F007F003F007F001F80
- FF001F80FF001FC0FF001FC0FF001FC0FF001FE0FF001FE0FF001FE0FF001FE07F001FE07F003F
- E03F003FE01F807FE00F807FE007C1DFE003FF9FE0007E1FE000001FE000001FC000001FC00000
- 1FC000003F801F003F803F803F003F803F003F807E003F807C001F01F8001E03F0000FFFE00007
- FF800001FE00001B277DA622>I<000003800000000007C00000000007C0000000000FE0000000
- 000FE0000000000FE0000000001FF0000000001FF0000000003FF8000000003FF8000000003FF8
- 0000000073FC0000000073FC00000000F3FE00000000E1FE00000000E1FE00000001C0FF000000
- 01C0FF00000003C0FF80000003807F80000007807FC0000007003FC0000007003FC000000E003F
- E000000E001FE000001E001FF000001C000FF000001FFFFFF000003FFFFFF800003FFFFFF80000
- 780007FC0000700003FC0000700003FC0000E00001FE0000E00001FE0001E00001FF0001C00000
- FF0001C00000FF00FFFE001FFFFEFFFE001FFFFEFFFE001FFFFE2F297EA834>65
- D<00003FF001800003FFFE0380000FFFFF8780003FF007DF8000FF8001FF8001FE00007F8003FC
- 00003F8007F000001F800FF000000F801FE0000007801FE0000007803FC0000007803FC0000003
- 807FC0000003807F80000003807F8000000000FF8000000000FF8000000000FF8000000000FF80
- 00000000FF8000000000FF8000000000FF8000000000FF8000000000FF80000000007F80000000
- 007F80000000007FC0000003803FC0000003803FC0000003801FE0000003801FE0000007000FF0
- 0000070007F000000E0003FC00001E0001FE00003C0000FF8000F800003FF007E000000FFFFFC0
- 000003FFFF000000003FF8000029297CA832>67 D<FFFFFFF80000FFFFFFFF8000FFFFFFFFE000
- 03FC001FF80003FC0007FC0003FC0001FE0003FC0000FF0003FC00007F8003FC00003FC003FC00
- 001FC003FC00001FE003FC00001FE003FC00000FF003FC00000FF003FC00000FF003FC00000FF0
- 03FC00000FF803FC00000FF803FC00000FF803FC00000FF803FC00000FF803FC00000FF803FC00
- 000FF803FC00000FF803FC00000FF803FC00000FF803FC00000FF003FC00000FF003FC00000FF0
- 03FC00001FE003FC00001FE003FC00001FC003FC00003FC003FC00007F8003FC00007F0003FC00
- 01FE0003FC0003FC0003FC001FF800FFFFFFFFE000FFFFFFFF8000FFFFFFFC00002D297DA835>
- I<FFFFFFFFE0FFFFFFFFE0FFFFFFFFE003FC001FE003FC0007F003FC0001F003FC0001F003FC00
- 00F003FC00007003FC00007003FC00007003FC01C07803FC01C03803FC01C03803FC01C03803FC
- 03C00003FC03C00003FC0FC00003FFFFC00003FFFFC00003FFFFC00003FC0FC00003FC03C00003
- FC03C00003FC01C00E03FC01C00E03FC01C00E03FC01C01C03FC00001C03FC00001C03FC00001C
- 03FC00003C03FC00003803FC00007803FC0000F803FC0001F803FC0003F803FC001FF8FFFFFFFF
- F0FFFFFFFFF0FFFFFFFFF027297DA82D>I<FFFFFFFFC0FFFFFFFFC0FFFFFFFFC003FC003FC003
- FC000FE003FC0003E003FC0001E003FC0001E003FC0000E003FC0000E003FC0000E003FC0000F0
- 03FC03807003FC03807003FC03807003FC03800003FC07800003FC07800003FC1F800003FFFF80
- 0003FFFF800003FFFF800003FC1F800003FC07800003FC07800003FC03800003FC03800003FC03
- 800003FC03800003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC
- 00000003FC00000003FC000000FFFFFC0000FFFFFC0000FFFFFC000024297DA82B>I<FFFFF01F
- FFFEFFFFF01FFFFEFFFFF01FFFFE03FC00007F8003FC00007F8003FC00007F8003FC00007F8003
- FC00007F8003FC00007F8003FC00007F8003FC00007F8003FC00007F8003FC00007F8003FC0000
- 7F8003FC00007F8003FC00007F8003FC00007F8003FC00007F8003FFFFFFFF8003FFFFFFFF8003
- FFFFFFFF8003FC00007F8003FC00007F8003FC00007F8003FC00007F8003FC00007F8003FC0000
- 7F8003FC00007F8003FC00007F8003FC00007F8003FC00007F8003FC00007F8003FC00007F8003
- FC00007F8003FC00007F8003FC00007F8003FC00007F8003FC00007F80FFFFF01FFFFEFFFFF01F
- FFFEFFFFF01FFFFE2F297DA836>72 D<FFFFFCFFFFFCFFFFFC01FE0001FE0001FE0001FE0001FE
- 0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE
- 0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE
- 0001FE0001FE0001FE0001FE00FFFFFCFFFFFCFFFFFC16297EA81A>I<FFFFFC0000FFFFFC0000
- FFFFFC000003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC0000
- 0003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC00
- 000003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC0001C003FC
- 0001C003FC0001C003FC0001C003FC0003C003FC00038003FC00038003FC00078003FC00078003
- FC000F8003FC000F8003FC001F8003FC007F8003FC01FF00FFFFFFFF00FFFFFFFF00FFFFFFFF00
- 22297DA829>76 D<FFFE0000001FFFC0FFFE0000001FFFC0FFFF0000003FFFC003FF0000003FF0
- 0003FF0000003FF00003BF80000077F00 00F0000003FE0000E0000001FF0001E0000001FF8003C000000
- 0FF8003800000007FC007800000007FE00F000000003FE00E000000001FF01E000000001FF83C0
- 00000000FF8380000000007FC780000000007FEF00000000003FEE00000000001FFE0000000000
- 0FFC00000000000FF8000000000007F8000000000007F8000000000007F8000000000007F80000
- 00000007F8000000000007F8000000000007F8000000000007F8000000000007F8000000000007
- F8000000000007F8000000000007F8000000000007F8000000000007F80000000001FFFFE00000
- 0001FFFFE000000001FFFFE0000031297FA834>89 D<01FF800007FFF0000F81F8001FC07E001F
- C07E001FC03F000F803F8007003F8000003F8000003F8000003F80000FFF8000FFFF8007FC3F80
- 0FE03F803F803F803F003F807F003F80FE003F80FE003F80FE003F80FE003F807E007F807F00DF
- 803F839FFC0FFF0FFC01FC03FC1E1B7E9A21>97 D<FFE0000000FFE0000000FFE00000000FE000
- 00000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE0
- 0000000FE00000000FE00000000FE00000000FE1FE00000FE7FF80000FFE07E0000FF801F0000F
- F000F8000FE000FC000FE000FE000FE0007F000FE0007F000FE0007F000FE0007F800FE0007F80
- 0FE0007F800FE0007F800FE0007F800FE0007F800FE0007F800FE0007F000FE0007F000FE0007F
- 000FE000FE000FE000FC000FF001F8000FF803F0000F9E07E0000F07FF80000E01FC0000212A7E
- A926>I<001FF80000FFFE0003F01F0007E03F800FC03F801F803F803F801F007F800E007F0000
- 007F000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000007F0000007F00
- 00007F8000003F8001C01F8001C00FC0038007E0070003F01E0000FFFC00001FE0001A1B7E9A1F
- >I<00003FF80000003FF80000003FF800000003F800000003F800000003F800000003F8000000
- 03F800000003F800000003F800000003F800000003F800000003F800000003F800000003F80000
- 1FE3F80000FFFBF80003F03FF80007E00FF8000FC007F8001F8003F8003F8003F8007F0003F800
- 7F0003F8007F0003F800FF0003F800FF0003F800FF0003F800FF0003F800FF0003F800FF0003F8
- 00FF0003F8007F0003F8007F0003F8007F0003F8003F8003F8001F8003F8000F8007F80007C00F
- F80003F03BFF8000FFF3FF80003FC3FF80212A7EA926>I<003FE00001FFF80003F07E0007C01F
- 000F801F801F800F803F800FC07F000FC07F0007C07F0007E0FF0007E0FF0007E0FFFFFFE0FFFF
- FFE0FF000000FF000000FF0000007F0000007F0000007F0000003F8000E01F8000E00FC001C007
- E0038003F81F0000FFFE00001FF0001B1B7E9A20>I<0007F0003FFC00FE3E01F87F03F87F03F0
- 7F07F07F07F03E07F00007F00007F00007F00007F00007F00007F000FFFFC0FFFFC0FFFFC007F0
- 0007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F0
- 0007F00007F00007F00007F00007F00007F00007F0007FFF807FFF807FFF80182A7EA915>I<00
- FF81F003FFE7F80FC1FE7C1F80FC7C1F007C383F007E107F007F007F007F007F007F007F007F00
- 7F007F007F007F003F007E001F007C001F80FC000FC1F8001FFFE00018FF800038000000380000
- 003C0000003E0000003FFFF8001FFFFF001FFFFF800FFFFFC007FFFFE01FFFFFF03E0007F07C00
- 01F8F80000F8F80000F8F80000F8F80000F87C0001F03C0001E01F0007C00FC01F8003FFFE0000
- 7FF0001E287E9A22>I<FFE0000000FFE0000000FFE00000000FE00000000FE00000000FE00000
- 000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE000
- 00000FE00000000FE07F00000FE1FFC0000FE787E0000FEE03F0000FF803F0000FF803F8000FF0
- 03F8000FF003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000F
- E003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F800
- 0FE003F8000FE003F800FFFE3FFF80FFFE3FFF80FFFE3FFF80212A7DA926>I<07000F801FC03F
- E03FE03FE01FC00F8007000000000000000000000000000000FFE0FFE0FFE00FE00FE00FE00FE0
- 0FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE0FFFEFFFEFF
- FE0F2B7DAA14>I<FFE00000FFE00000FFE000000FE000000FE000000FE000000FE000000FE000
- 000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE01FFC0FE01FFC0FE0
- 1FFC0FE007800FE00F000FE01E000FE03C000FE078000FE0E0000FE3C0000FE7C0000FEFE0000F
- FFE0000FFFF0000FF3F8000FE3F8000FC1FC000FC0FE000FC07F000FC07F000FC03F800FC01FC0
- 0FC00FC00FC00FE0FFFC3FFEFFFC3FFEFFFC3FFE1F2A7EA924>107 D<FFE0FFE0FFE00FE00FE0
- 0FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00F
- E00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE0FFFEFFFEFFFE0F2A7DA9
- 14>I<FFC07F800FF000FFC1FFE03FFC00FFC383F0707E000FC603F8C07F000FCC01F9803F000F
- D801FF003F800FF001FE003F800FF001FE003F800FE001FC003F800FE001FC003F800FE001FC00
- 3F800FE001FC003F800FE001FC003F800FE001FC003F800FE001FC003F800FE001FC003F800FE0
- 01FC003F800FE001FC003F800FE001FC003F800FE001FC003F800FE001FC003F800FE001FC003F
- 800FE001FC003F800FE001FC003F80FFFE1FFFC3FFF8FFFE1FFFC3FFF8FFFE1FFFC3FFF8351B7D
- 9A3A>I<FFC07F0000FFC1FFC000FFC787E0000FCE03F0000FD803F0000FD803F8000FF003F800
- 0FF003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8
- 000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003
- F8000FE003F800FFFE3FFF80FFFE3FFF80FFFE3FFF80211B7D9A26>I<003FE00001FFFC0003F0
- 7E000FC01F801F800FC03F800FE03F0007E07F0007F07F0007F07F0007F0FF0007F8FF0007F8FF
- 0007F8FF0007F8FF0007F8FF0007F8FF0007F8FF0007F87F0007F07F0007F03F800FE03F800FE0
- 1F800FC00FC01F8007F07F0001FFFC00003FE0001D1B7E9A22>I<FFE1FE0000FFE7FF8000FFFE
- 07E0000FF803F0000FF001F8000FE000FC000FE000FE000FE000FF000FE0007F000FE0007F000F
- E0007F800FE0007F800FE0007F800FE0007F800FE0007F800FE0007F800FE0007F800FE0007F00
- 0FE000FF000FE000FF000FE000FE000FE001FC000FF001F8000FF803F0000FFE0FE0000FE7FF80
- 000FE1FC00000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE000
- 00000FE00000000FE0000000FFFE000000FFFE000000FFFE00000021277E9A26>I<FFC1F0FFC7
- FCFFCE3E0FD87F0FD87F0FF07F0FF03E0FF01C0FE0000FE0000FE0000FE0000FE0000FE0000FE0
- 000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE000FFFF00FFFF00FFFF00181B
- 7E9A1C>114 D<03FE300FFFF01E03F03800F0700070F00070F00070F80070FC0000FFE0007FFE
- 007FFF803FFFE01FFFF007FFF800FFF80003FC0000FC60007CE0003CF0003CF00038F80038FC00
- 70FF01E0F7FFC0C1FF00161B7E9A1B>I<00700000700000700000700000F00000F00000F00001
- F00003F00003F00007F0001FFFF0FFFFF0FFFFF007F00007F00007F00007F00007F00007F00007
- F00007F00007F00007F00007F00007F00007F00007F03807F03807F03807F03807F03807F03803
- F03803F87001F86000FFC0001F8015267FA51B>I<FFE03FF800FFE03FF800FFE03FF8000FE003
- F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE0
- 03F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000F
- E003F8000FE003F8000FE007F80007E007F80007E00FF80003F03BFF8001FFF3FF80003FC3FF80
- 211B7D9A26>I<FFFE03FF80FFFE03FF80FFFE03FF8007F000700007F000700007F800F00003F8
- 00E00003FC01E00001FC01C00001FC01C00000FE03800000FE038000007F070000007F07000000
- 7F8F0000003F8E0000003FDE0000001FDC0000001FDC0000000FF80000000FF80000000FF80000
- 0007F000000007F000000003E000000003E000000001C00000211B7F9A24>I<FFFE7FFC0FFEFF
- FE7FFC0FFEFFFE7FFC0FFE0FE007E000E007F003F001C007F003F001C007F807F803C003F807F8
- 038003F807F8038001FC0EFC070001FC0EFC070001FE1EFC0F0000FE1C7E0E0000FE1C7E0E0000
- FF383F1E00007F383F1C00007F783F3C00003FF01FB800003FF01FB800003FF01FF800001FE00F
- F000001FE00FF000000FC007E000000FC007E000000FC007E00000078003C00000078003C0002F
- 1B7F9A32>I<FFFE03FF80FFFE03FF80FFFE03FF8007F000700007F000700007F800F00003F800
- E00003FC01E00001FC01C00001FC01C00000FE03800000FE038000007F070000007F070000007F
- 8F0000003F8E0000003FDE0000001FDC0000001FDC0000000FF80000000FF80000000FF8000000
- 07F000000007F000000003E000000003E000000001C000000001C0000000038000000003800000
- 38078000007C07000000FE0F000000FE0E000000FE1E000000FE3C0000007C780000003FE00000
- 000FC000000021277F9A24>121 D E /Fj 14 118 df<FFFFFFC03FFFFFF0FFFFFFC03FFFFFF0
- FFFFFFC03FFFFFF000FFC000003FF00000FFC000003FF00000FFC000003FF00000FFC000003FF0
- 0000FFC000003FF00000FFC000003FF00000FFC000003FF00000FFC000003FF00000FFC000003F
- F00000FFC000003FF00000FFC000003FF00000FFC000003FF00000FFC000003FF00000FFC00000
- 3FF00000FFC000003FF00000FFC000003FF00000FFC000003FF00000FFC000003FF00000FFC000
- 003FF00000FFFFFFFFFFF00000FFFFFFFFFFF00000FFFFFFFFFFF00000FFC000003FF00000FFC0
- 00003FF00000FFC000003FF00000FFC000003FF00000FFC000003FF00000FFC000003FF00000FF
- C000003FF00000FFC000003FF00000FFC000003FF00000FFC000003FF00000FFC000003FF00000
- FFC000003FF00000FFC000003FF00000FFC000003FF00000FFC000003FF00000FFC000003FF000
- 00FFC000003FF00000FFC000003FF00000FFC000003FF00000FFC000003FF00000FFC000003FF0
- 00FFFFFFC03FFFFFF0FFFFFFC03FFFFFF0FFFFFFC03FFFFFF03C317EB041>72
- D<FFFF8000000001FFFF80FFFFC000000003FFFF80FFFFE000000007FFFF8000FFE000000007FF
- 800000EFF00000000EFF800000EFF00000000EFF800000EFF00000000EFF800000E7F80000001C
- FF800000E7F80000001CFF800000E3FC00000038FF800000E3FC00000038FF800000E1FE000000
- 70FF800000E1FE00000070FF800000E0FF00000 3
- bop 75 50 a Fg(1)41 b(INTR)o(ODUCTION)1378 b Ff(2)137 195 y(Our)15
- b(compiler)d(do)q(es)i(not)g(\(y)o(et\))g(pro)q(duce)h(stand-alone)e
- (executables.)20 b(Program)12 b(execution)j(o)q(ccurs)g(within)75
- 245 y(the)f(en)o(vironmen)o(t)f(of)h(the)g(compiler.)137 320
- y(W)m(e)33 b(supply)g(man)o(y)e(Hask)o(ell)i(programs)f(and)h(utilities)f(in)
- g(our)i(distribution.)75 b(The)33 b(directory)75 369 y Fd($HASKELL/progs)11
- b Ff(con)o(tains)j(man)o(y)e(examples)h(of)h(Hask)o(ell)f(programming.)i
- (Within)e(this)h(directory)m(,)g Fd(prelude)75 419 y Ff(con)o(tains)g(the)i
- (v)o(ersion)e(of)g(the)h(prelude)h(used)f(b)o(y)f(the)i(system,)e
- Fd(demo)f Ff(con)o(tains)i(man)o(y)d(sample)i(programs,)f Fd(lib)75
- 469 y Ff(con)o(tains)k(a)g(n)o(um)o(b)q(er)g(of)f(useful)h(libraries,)h
- (including)e(the)i(X)f(windo)o(w)f(in)o(terface.)29 b(All)16
- b(do)q(cumen)o(tation)g(is)h(in)75 519 y Fd($HASKELL/doc)n
- Ff(.)137 594 y(The)k(one)g(incompatibili)o(t)o(y)c(b)q(et)o(w)o(een)22
- b(our)f(system)f(and)g(standard)h(Hask)o(ell)f(is)g(the)h(I/O)f(system.)38
- b(The)75 643 y(monadic)15 b(I/O)i(system)g(w)o(e)g(use)g(is)g(based)h(on)e
- (the)i(prop)q(osed)f(Hask)o(ell)g(1.3)f(functionalit)o(y)m(,)f(although)h
- (some)g(of)75 693 y(the)h(features)h(are)f(not)f(y)o(et)h(implem)o(en)o(ted)e
- (and)h(other)h(features)h(ma)o(y)c(c)o(hange)j(further)g(b)q(efore)h(Hask)o
- (ell)e(1.3)f(is)75 743 y(o\016cially)d(adopted.)18 b(W)m(e)13
- b(pro)o(vide)g(a)h(compatibilit)o(y)c(pac)o(k)n(age)j(for)h(the)g(con)o(tin)o
- (uation-based)f(I/O)h(from)d(Hask)o(ell)75 793 y(1.2,)h(but)j(stream)e(I/O)h
- (is)g(not)f(a)o(v)n(ailable.)75 934 y Fh(1.2)56 b(Hask)n(ell)17
- b(Con)n(tacts)75 1035 y Ff(There)d(are)g(a)f(n)o(um)o(b)q(er)f(of)h
- (addresses)i(asso)q(ciated)f(with)f(Hask)o(ell)g(and)g(the)h(Y)m(ale)e(Hask)o
- (ell)h(Pro)r(ject,)h(as)f(describ)q(ed)75 1085 y(b)q(elo)o(w.)137
- 1202 y Fe(\017)21 b Fd(haskell-requests)o(@cs.y)o(ale.e)o(du)179
- 1251 y Ff(Use)16 b(this)g(address)h(to)e(comm)o(unicate)f(with)h(us)h(ab)q
- (out)g(our)f(compiler.)22 b(W)m(e)15 b(also)g(main)o(tain)e(the)j(Hask)o(ell)
- 179 1301 y(mailing)10 b(list.)137 1384 y Fe(\017)21 b Fd(haskell-bugs@cs.)o
- (yale.)o(edu)179 1434 y Ff(Send)14 b(bug)g(rep)q(orts)h(to)f(this)g(address.)
- 137 1517 y Fe(\017)21 b Fd(haskell@cs.yale.)o(edu)179 1567
- y Ff(This)13 b(is)f(a)h(mailing)c(list)k(for)f(general)h(issues)h(concerning)
- g(the)f(language.)k(Messages)d(sen)o(t)g(to)f(this)g(address)179
- 1617 y(are)19 b(forw)o(arded)g(to)g(all)e(mem)o(b)q(ers)h(of)g(the)i(Hask)o
- (ell)e(discussion)i(list,)f(whic)o(h)g(has)g(a)f(USA)h(distribution)179
- 1666 y(managed)10 b(b)o(y)h(Y)m(ale)g(and)g(an)g(Europ)q(ean)i(distribution)e
- (managed)f(b)o(y)h(the)h(Univ)o(ersit)o(y)g(of)e(Glasgo)o(w.)16
- b(Please)179 1716 y(do)e(not)g(send)h(bug)f(rep)q(orts)i(or)e(other)h
- (messages)f(sp)q(eci\014cally)h(ab)q(out)f(the)h(Y)m(ale)e(implemen)o(tation)
- e(to)j(this)179 1766 y(list!)137 1849 y Fe(\017)21 b Fd(ftp://ftp.dcs.gl)o
- (asgow)o(.ac.u)o(k/pub)o(/glas)o(gow-f)o(p/gl)o(asgow)o(-fp.h)o(tml)179
- 1899 y Ff(This)13 b(is)h(a)f(W)m(orld-Wide-W)m(eb)f(page)h(describing)h
- (functional)f(programmi)o(ng)e(at)i(Glasgo)o(w)f(and)i(has)g(links)179
- 1949 y(to)g(other)g(functional)f(programmi)o(ng)e(resources.)75
- 2090 y Fh(1.3)56 b(Getting)17 b(Started)h(with)h(Y)-5 b(ale)19
- b(Hask)n(ell)75 2191 y Ff(First)c(time)e(users)i(of)f(Y)m(ale)g(Hask)o(ell)f
- (should)h(refer)i(to)e(section)h(13)f(whic)o(h)g(con)o(tains)g(instructions)h
- (for)f(installing)75 2241 y(and)g(con\014guring)g(Y)m(ale)g(Hask)o(ell.)19
- b(Y)m(ou)14 b(need)h(to)f(c)o(ho)q(ose)i(b)q(et)o(w)o(een)f(running)f(the)h
- (system)g(using)f(the)h(command)75 2291 y(in)o(terface)g(\(as)g(describ)q(ed)
- h(in)e(5\))g(or)h(using)f(it)g(through)h(Emacs.)k(W)m(e)14
- b(suggest)h(y)o(ou)f(use)i(the)f(Emacs)f(in)o(terface)h(if)75
- 2341 y(p)q(ossible.)137 2416 y(W)m(e)e(pro)o(vide)f(an)h(online)f(supplemen)o
- (t)h(to)f(the)i(Hudak)e(and)h(F)m(asel)g(tutorial)e(\(lo)q(cated)j(in)e(the)h
- Fd($HASKELL/doc)75 2465 y Ff(directory)18 b(and)e(published)i(in)e(Sigplan)g
- (Notices\))h(as)g(part)h(of)e(b)q(oth)h(the)g(Emacs)g(and)g(Macin)o(tosh)f
- (in)o(terfaces.)75 2515 y(W)m(e)f(strongly)g(recommend)f(that)i(no)o(vice)f
- (programmers)f(b)q(egin)h(b)o(y)h(running)f(this)g(tutorial,)g(since)h(it)f
- (explains)75 2565 y(b)q(oth)h(the)g(editor)f(commands)f(and)h(the)h(features)
- h(of)e(the)h(Hask)o(ell)f(language.)22 b(Unless)16 b(y)o(ou)f(need)i(some)d
- (of)h(the)75 2615 y(more)d(adv)n(anced)i(features,)g(running)f(the)h
- (tutorial)f(should)g(explain)g(enough)h(of)e(the)i(editor)g(in)o(terface)g
- (for)f(most)75 2665 y(programming)o(.)p eop
- %%Page: 3 4
- bop 75 50 a Fg(2)41 b(USER)14 b(INTERF)-5 b(A)o(CE)15 b(O)o(VER)-5
- b(VIEW)1097 b Ff(3)137 195 y(F)m(rom)12 b(the)j(Emacs)e(in)o(terface,)h
- (start)h(this)f(tutorial)f(using)g(the)i(command)c Fd(M-x)75
- 245 y(haskell-tutorial)m Ff(.)34 b(F)m(rom)17 b(the)j(Macin)o(tosh)f(in)o
- (terface,)i(select)f(the)g Fd(Tutorial)d Ff(item)h(from)g(the)h
- Fd(Haskell)75 295 y Ff(men)o(u.)31 b(If)18 b(y)o(ou)g(can)h(not)f(use)h(an)g
- (editor)f(in)o(terface,)i(y)o(ou)e(can)h(still)e(run)i(the)g(example)e
- (programs)h(from)e(the)75 345 y(tutorial)i(b)o(y)g(breaking)h(them)f(out)g
- (of)g(the)i(tutorial)d(\014le)i(b)o(y)g(hand.)32 b(The)19 b(text)g(of)f(the)i
- (tutorial)e(is)g(found)g(in)75 394 y Fd($HASKELL/progs/tu)o(toria)o(l.lhs)l
- Ff(.)137 469 y(Sections)g(2,)g(3,)f(4,)h(and)f(5)g(describ)q(e)i(the)f(user)g
- (in)o(terface)g(to)f(Y)m(ale)g(Hask)o(ell.)27 b(If)17 b(y)o(ou)g(are)h
- (writing)e(Hask)o(ell)75 519 y(programs)h(that)h(consist)g(of)f(more)g(than)h
- (one)g(mo)q(dule)e(or)i(source)h(\014le,)g(y)o(ou)e(should)h(read)g(section)h
- (6)e(to)h(\014nd)75 569 y(out)d(ho)o(w)g(to)g(structure)j(y)o(our)d(program.)
- 21 b(The)15 b(remainder)g(of)g(the)h(man)o(ual)d(con)o(tains)i(information)d
- (ab)q(out)j(the)75 619 y(extensions)g(supp)q(orted)g(b)o(y)f(Y)m(ale)f(Hask)o
- (ell)g(and)h(hin)o(ts)g(for)g(debugging)f(and)h(e\016ciency)m(.)75
- 781 y Fi(2)69 b(User)23 b(In)n(terface)f(Ov)n(erview)75 897
- y Ff(W)m(e)14 b(curren)o(tly)h(supp)q(ort)h(three)g(di\013eren)o(t)f(user)h
- (in)o(terfaces)f(for)f(Y)m(ale)g(Hask)o(ell:)19 b(a)14 b(simple)f(command-l)o
- (ine)f(in)o(ter-)75 946 y(face,)i(an)f(Emacs-based)h(in)o(terface,)g(and)g(a)
- f(Macin)o(tosh)h(in)o(terface)h(with)e(its)h(o)o(wn)g(em)o(b)q(edded)g
- (editor.)137 1021 y(The)g(editor-based)g(in)o(terfaces)g(are)g(the)g(b)q(est)
- h(w)o(a)o(y)d(to)h(use)i(the)e(Y)m(ale)g(Hask)o(ell)g(system.)18
- b(Both)13 b(of)g(the)h(editor-)75 1071 y(based)e(in)o(terfaces)g(allo)o(w)e
- (y)o(ou)h(to)g(in)o(teract)h(with)g(the)g(command)c(in)o(terface)k(in)f(a)g
- (listener)h(windo)o(w)f(if)g(y)o(ou)g(c)o(ho)q(ose,)75 1121
- y(so)j(y)o(ou)g(ma)o(y)f(\014nd)h(it)g(useful)h(to)f(skim)f(the)i
- (description)g(of)e(the)i(command)d(in)o(terface)j(in)f(section)h(5)f(ev)o
- (en)h(if)e(y)o(ou)75 1170 y(use)i(the)f(editor)g(in)o(terfaces.)137
- 1245 y(The)h(remainder)e(of)g(this)h(section)h(describ)q(es)h(some)d
- (concepts)i(that)f(are)h(common)c(to)i(all)g(three)i(in)o(terfaces.)75
- 1386 y Fh(2.1)56 b(Incremen)n(tal)16 b(Compilation)75 1488
- y Ff(All)10 b(of)g(the)h(user)h(in)o(terfaces)g(supp)q(ort)f(an)g(incremen)o
- (tal)e(compilation)f(facilit)o(y)h(as)i(w)o(ell)f(as)h(commands)d(for)i
- (compil-)75 1538 y(ing)h(and)h(loading)e(programs)g(from)g(\014les.)18
- b(Incremen)o(tal)11 b(compilation)e(is)j(used)g(to)g(ev)n(aluate)f(Hask)o
- (ell)g(expressions)75 1587 y(in)i(the)i(con)o(text)g(of)e(a)g(selected)j
- (program.)137 1662 y(There)c(are)g(t)o(w)o(o)f(fundamen)o(tal)e(incremen)o
- (tal)h(compilation)e(op)q(erations.)17 b(The)12 b(\014rst)g(is)e(executing)i
- (a)f Fc(dialo)n(gue)s Ff(,)75 1712 y(or)k(an)g(expression)h(of)e(t)o(yp)q(e)h
- Fd(IO\(\))p Ff(.)21 b(The)15 b(second)h(op)q(eration)f(is)f(ev)n(aluating)g
- (Hask)o(ell)g(expressions)j(of)d(arbitrary)75 1762 y(t)o(yp)q(e)g(and)f(prin)
- o(ting)f(the)i(result.)19 b(\(This)13 b(second)h(op)q(eration)f(is)g
- (actually)g(handled)g(b)o(y)g(running)g(a)g(dialogue)f(that)75
- 1812 y(prin)o(ts)j(the)h(v)n(alue)e(of)h(the)h(expression)g(using)f(the)g
- Fd(Text)g Ff(class.\))22 b(In)15 b(b)q(oth)g(cases,)h(the)g(expression)g(is)f
- (ev)n(aluated)75 1861 y(in)e(the)i(con)o(text)g(of)e(a)g(program)g(mo)q
- (dule.)137 1936 y(When)18 b(y)o(ou)e(start)i(a)f(fresh)h(Hask)o(ell)e
- (without)h(an)o(y)g(\014les)g(loaded,)g(it)g(initially)d(creates)19
- b(an)e(empt)o(y)f(mo)q(dule)75 1986 y(named)f Fd(Main)g Ff(in)h(whic)o(h)g
- (expressions)h(ma)o(y)d(b)q(e)j(ev)n(aluated.)24 b(Y)m(ou)16
- b(can)g(use)h(this)f(to)g(explore)h(functions)f(in)f(the)75
- 2036 y(Hask)o(ell)e(prelude)i(in)o(teractiv)o(ely)f(without)f(creating)h(a)g
- (Hask)o(ell)f(source)j(\014le.)137 2111 y(In)g(addition)e(to)i(simply)d(prin)
- o(ting)i(or)h(executing)g(expressions,)h(the)f(incremen)o(tal)f(compiler)f
- (can)i(add)g(new)75 2160 y(de\014nitions)h(to)g(an)g(existing)f(mo)q(dule)g
- (without)h(recompiling)e(the)i(mo)q(dule.)26 b(This)17 b(is)g(primarily)d
- (useful)j(when)75 2210 y(editing)i(the)h(source)g(co)q(de)g(of)f(a)g(mo)q
- (dule)f(w)o(ould)g(cause)j(noticeable)e(recompilation)e(dela)o(ys.)34
- b(These)21 b(added)75 2260 y(de\014nitions)16 b(are)h(stored)g(in)f(a)g
- Fc(scr)n(atch)i(p)n(ad)j Ff(asso)q(ciated)c(with)f(a)g(mo)q(dule.)24
- b(The)17 b(presen)o(tation)g(of)f(the)h(scratc)o(h)75 2310
- y(pad)c(dep)q(ends)i(on)e(the)g(in)o(terface)h(but)g(in)e(all)g(cases)j
- (there)f(are)g(a)f(n)o(um)o(b)q(er)f(of)h(restrictions)h(on)f(de\014nitions)g
- (whic)o(h)75 2360 y(y)o(ou)g(can)i(place)f(in)f(a)h(scratc)o(h)h(pad:)137
- 2476 y Fe(\017)21 b Ff(A)16 b(scratc)o(h)h(pad)f(ma)o(y)d(not)j(con)o(tain)g
- (an)o(y)f(imp)q(ort)f(or)i(\014xit)o(y)f(declarations.)24 b(Only)16
- b(names)f(visible)g(in)g(the)179 2526 y(asso)q(ciated)f(mo)q(dule)f(or)h
- (within)f(the)h(pad)g(itself)g(can)g(b)q(e)g(referenced.)137
- 2609 y Fe(\017)21 b Ff(No)14 b(de\014nition)f(in)g(a)h(pad)g(can)g(b)q(e)g
- (exp)q(orted)h(from)e(the)h(asso)q(ciated)h(mo)q(dule.)137
- 2692 y Fe(\017)21 b Ff(The)14 b(pad)g(cannot)g(rede\014ne)i(an)o(ything)c(in)
- i(the)g(asso)q(ciated)h(mo)q(dule.)p eop
- %%Page: 4 5
- bop 75 50 a Fg(3)41 b(USING)14 b(HASKELL)h(FR)o(OM)e(EMA)o(CS)1069
- b Ff(4)137 195 y(In)14 b(addition)f(to)h(program)e(execution,)i(the)h(v)n
- (arious)e(in)o(terfaces)i(pro)o(vide)e(the)i(follo)o(wing)c(basic)j
- (services:)137 303 y Fe(\017)21 b Ff(Compilatio)o(n)12 b(of)h(Hask)o(ell)h
- (programs)f(and)h(in)o(terfaces.)20 b(Tw)o(o)14 b(basic)g(compilation)d(mo)q
- (des)j(are)g(used:)20 b(fast)179 353 y(compilation)8 b(to)i(in)o(terpreted)j
- (Lisp)d(co)q(de)i(for)e(immediate)e(execution,)k(and)e(slo)o(w)o(er)h
- (compilation)d(to)i(nativ)o(e)179 403 y(co)q(de)16 b(whic)o(h)g(is)g(b)q(oth)
- g(written)g(to)g(output)g(\014les)g(and)g(a)o(v)n(ailable)d(for)j(immedia)o
- (te)e(execution.)24 b(These)18 b(are)179 452 y(describ)q(ed)d(as)f
- Fc(lo)n(ad)19 b Ff(and)13 b Fc(c)n(ompile)s Ff(,)h(resp)q(ectiv)o(ely)m(.)137
- 535 y Fe(\017)21 b Ff(V)m(erb)q(osit)o(y)d(con)o(trol)f(for)h(the)g(compiler)
- f(and)h(system.)29 b(A)18 b(large)g(set)h(of)e(prin)o(ters)i(is)f(a)o(v)n
- (ailable)d(to)j(sho)o(w)179 585 y(in)o(termediate)c(results)j(during)e
- (compilation)d(and)j(con)o(trol)g(the)h(prin)o(ting)e(of)h(v)n(arious)f
- (system)h(messages.)179 635 y(There)g(are)f(not)g(generally)f(useful)h(to)g
- (the)h(casual)e(user.)137 718 y Fe(\017)21 b Ff(Optimizer)e(con)o(trols.)38
- b(Although)20 b(it)g(is)h(not)f(usually)g(necessary)i(to)e(c)o(hange)h(the)g
- (default)f(optimizer)179 768 y(settings,)14 b(commands)d(are)k(pro)o(vided)f
- (whic)o(h)f(con)o(trol)h(the)g(v)n(arious)g(optimizations.)137
- 851 y Fe(\017)21 b Ff(In)o(teraction)f(with)f(the)h(underlying)f(Lisp)g
- (system.)34 b(This)20 b(is)f(o)q(ccasionally)f(useful)i(when)g(the)g(foreign)
- 179 901 y(function)13 b(in)o(terface)i(is)f(used.)75 1042 y
- Fh(2.2)56 b(Non-In)n(teractiv)n(e)17 b(Use)75 1143 y Ff(It)11
- b(is)g(also)f(p)q(ossible)h(to)g(run)g(Y)m(ale)f(Hask)o(ell)g(non-in)o
- (teractiv)o(ely)g(b)o(y)h(in)o(v)o(oking)e(it)i(from)e(a)h(shell)h(with)f
- (command-li)o(ne)75 1193 y(argumen)o(ts,)j(lik)o(e)g(this:)75
- 1309 y Fd(\045)22 b(haskell)e(file)h(arg1)g(arg2)g(...)137
- 1426 y Ff(This)16 b(causes)i(Hask)o(ell)e(to)g(load)f(the)h(compilation)e
- (unit)i Fd(file)o Ff(,)g(run)g(the)h(dialogue)e(named)g Fd(main)h
- Ff(with)f(the)75 1476 y(giv)o(en)e(command-line)e(argumen)o(ts,)i(and)g(then)
- i(exit.)137 1550 y(\(Of)f(course,)h(this)f(do)q(esn't)g(w)o(ork)g(on)f(the)i
- (Macin)o(tosh,)e(whic)o(h)h(do)q(esn't)h(ha)o(v)o(e)e(a)h(shell.\))75
- 1712 y Fi(3)69 b(Using)23 b(Hask)n(ell)e(from)i(Emacs)75 1828
- y Ff(This)14 b(section)g(describ)q(es)i(ho)o(w)e(to)g(use)g(Y)m(ale)g(Hask)o
- (ell)f(from)f(Gn)o(u)h(Emacs.)137 1903 y(Before)19 b(using)f(the)g(Emacs)f
- (Hask)o(ell)h(mo)q(de,)f(y)o(ou)g(m)o(ust)g(\014rst)i(con\014gure)f(y)o(our)g
- Fd(.emacs)e Ff(\014le)i(as)g(describ)q(ed)75 1953 y(in)d(section)h(13.)23
- b(Once)17 b(y)o(our)e Fd(.emacs)f Ff(\014le)i(has)f(b)q(een)i(mo)q(di\014ed)d
- (to)i(recognize)g(Hask)o(ell)f(programs,)f(the)j(Emacs)75 2003
- y(editor)d(will)e(en)o(ter)j(Hask)o(ell)f(mo)q(de)f(whenev)o(er)i(a)f(\014le)
- f(with)h(extension)h Fd(.hs)e Ff(or)h Fd(.lhs)f Ff(is)g(visited.)75
- 2144 y Fh(3.1)56 b(In)n(teraction)18 b(with)g(the)h(Hask)n(ell)e(Pro)r(cess)
- 75 2245 y Ff(Hask)o(ell)10 b(mo)q(de)f(pro)o(vides)i(Emacs)f(commands)e(for)i
- (comm)o(uni)o(cating)e(directly)i(with)g(the)h(Hask)o(ell)f(pro)q(cess.)19
- b(There)75 2295 y(are)f(t)o(w)o(o)g(basic)g(commands:)23 b(ev)n(aluating)17
- b(and)g(prin)o(ting)g(an)h(expression)h(\()p Fd(C-c)i(e)p Ff(\))d(and)g
- (running)g(a)f(dialogue)75 2345 y(\()p Fd(C-c)k(r)p Ff(\).)d(They)c(op)q
- (erate)h(as)f(follo)o(ws:)126 2461 y(1.)20 b(Emacs)14 b(prompts)f(y)o(ou)h
- (for)h(a)f(Hask)o(ell)g(expression.)21 b(F)m(or)14 b Fd(C-c)21
- b(e)p Ff(,)14 b(the)h(v)n(alue)f(of)g(the)h(expression)h(m)o(ust)d(b)q(e)179
- 2511 y(in)g(class)i Fd(Text)o Ff(.)j(F)m(or)13 b Fd(C-c)21
- b(r)p Ff(,)14 b(the)g(v)n(alue)f(m)o(ust)g(b)q(e)i(of)e(t)o(yp)q(e)h
- Fd(IO\(\))o Ff(.)126 2594 y(2.)20 b(An)14 b(inferior)f(Hask)o(ell)h(pro)q
- (cess)h(is)f(started)h(if)e(one)h(is)g(not)g(already)f(running.)126
- 2677 y(3.)20 b(All)13 b(bu\013ers)i(con)o(taining)e(Hask)o(ell)g(source)i
- (\014les)g(are)f(sa)o(v)o(ed.)p eop
- %%Page: 5 6
- bop 75 50 a Fg(3)41 b(USING)14 b(HASKELL)h(FR)o(OM)e(EMA)o(CS)1069
- b Ff(5)126 195 y(4.)20 b(The)14 b(compilation)d(unit)j(b)q(eing)g(edited)g
- (is)g(loaded)f(in)o(to)g(the)i(Hask)o(ell)e(system)h(if)f(necessary)m(.)126
- 276 y(5.)20 b(The)15 b(expression)h(is)f(ev)n(aluated)g(or)g(run)g(in)g(the)h
- (con)o(text)f(of)g(the)g(mo)q(dule)f(con)o(taining)g(the)h(cursor)h(\(there)
- 179 326 y(ma)o(y)c(b)q(e)i(more)f(than)h(one)g(mo)q(dule)f(in)g(a)h
- (\014le\).)126 407 y(6.)20 b(The)14 b Fd(*haskell*)e Ff(bu\013er)j(p)q(ops)f
- (up)g(to)g(displa)o(y)f(the)h(result.)137 515 y(As)f(w)o(ell)e(as)h
- (receiving)h(diagnostic)e(and)h(error)h(messages)f(and)g(I/O)g(op)q(erations)
- g(on)g Fd(stdin)f Ff(and)h Fd(stdout)n Ff(,)g(the)75 565 y
- Fd(*haskell*)h Ff(bu\013er)i(acts)g(as)g(a)f(listener)i(windo)o(w)d(for)i
- (the)g(Hask)o(ell)f(command)e(in)o(terpreter.)22 b(Y)m(ou)14
- b(can)g(in)o(teract)75 615 y(directly)d(with)f(the)h(command)d(in)o
- (terpreter)k(in)e(this)h(bu\013er)h(if)d(y)o(ou)h(c)o(ho)q(ose.)18
- b(See)12 b(section)f(5)f(for)g(more)g(information)75 664 y(ab)q(out)k(the)g
- (command)d(in)o(terface.)137 737 y(The)18 b(mo)q(de)f(line)g(for)g(the)h
- Fd(*haskell*)e Ff(bu\013er)j(includes)f(information)c(ab)q(out)k(the)g
- (status)g(of)f(the)h(inferior)75 787 y(Hask)o(ell)d(pro)q(cess.)23
- b(The)16 b(v)n(alues)f(are:)21 b Fd(ready)14 b Ff(\(the)h(pro)q(cess)i(is)e
- (w)o(aiting)f(for)h(a)g(command\),)d Fd(busy)i Ff(\(the)i(pro)q(cess)75
- 837 y(is)e(busy)h(pro)q(cessing)h(a)e(command\),)d(and)j Fd(input)g
- Ff(\(the)h(pro)q(cess)h(is)e(w)o(aiting)f(for)h(input)h(on)f
- Fd(stdin)o Ff(\).)20 b(Note)14 b(that,)75 886 y(since)f(the)g(Hask)o(ell)e
- (pro)q(cess)j(runs)f(async)o(hronously)m(,)e(y)o(ou)h(can)g(do)g(other)h
- (things)f(in)f(Emacs)h(and)g(queue)h(up)f(more)75 936 y(commands)f(to)j(b)q
- (e)h(executed)h(ev)o(en)e(when)g(the)h(Hask)o(ell)e(pro)q(cess)j(is)e(busy)m
- (.)75 1074 y Fh(3.2)56 b(Ev)m(aluation)17 b(Con)n(text)75 1173
- y Ff(The)h Fc(curr)n(ent)g(mo)n(dule)g Ff(for)f(ev)n(aluation)f(is)h
- (determined)h(b)o(y)f(the)i(t)o(yp)q(e)f(of)f(bu\013er)h(from)e(whic)o(h)i
- (the)g(command)75 1223 y(w)o(as)e(giv)o(en.)23 b(In)16 b(a)g
- Fd(.hs)f Ff(bu\013er,)i(the)f(curren)o(t)i(mo)q(dule)c(is)i(the)h(mo)q(dule)d
- (de\014nition)h(con)o(taining)g(the)i(cursor.)25 b(In)75 1273
- y(a)15 b(scratc)o(h)i(pad)e(bu\013er,)h(it)f(is)g(the)h(mo)q(dule)e(asso)q
- (ciated)i(with)f(the)g(pad.)23 b(In)15 b(the)h Fd(*haskell*)d
- Ff(bu\013er,)j(the)g(most)75 1323 y(recen)o(tly)f(used)g(mo)q(dule)d(is)i
- (remem)o(b)q(ered.)137 1395 y(The)g(Emacs)f(in)o(terface)g(implemen)o(ts)e(a)
- i Fc(scr)n(atch)h(p)n(ad)g Ff(as)f(a)g(sp)q(ecial)h(bu\013er)g(asso)q(ciated)
- g(with)f(a)g(mo)q(dule)f(\(not)75 1445 y(with)e(a)g(\014le!\).)16
- b(When)10 b(y)o(ou)g(ev)n(aluate)g(an)g(expression)h(or)f(dialogue,)g(Emacs)f
- (arranges)i(for)f(the)g(ev)n(aluation)f(con)o(text)75 1495
- y(to)15 b(b)q(e)h(augmen)o(ted)f(b)o(y)g(the)h(con)o(ten)o(ts)g(of)f(the)h
- (scratc)o(h)g(pad)g(bu\013er)g(for)f(the)h(curren)o(t)h(mo)q(dule.)k(\(This)
- 15 b(happ)q(ens)75 1545 y(ev)o(en)f(if)f(the)h(command)d(w)o(as)j(not)f
- (actually)g(issued)h(from)e(the)j(scratc)o(h)f(bad)g(bu\013er.\))19
- b(Y)m(ou)13 b(can)h(use)g(the)h(scratc)o(h)75 1595 y(pad)e
- Fd(*Main-pad*)e Ff(to)i(pla)o(y)g(with)g(the)h(system)f(without)g(creating)g
- (a)g Fd(.hs)g Ff(\014le.)18 b(The)c Fd(C-c)21 b(p)13 b Ff(command)d(p)q(ops)k
- (up)75 1644 y(the)g(bu\013er)h(con)o(taining)e(the)i(scratc)o(h)g(pad)f(for)f
- (the)i(curren)o(t)g(mo)q(dule.)75 1782 y Fh(3.3)56 b(Emacs)17
- b(Commands)75 1882 y Ff(This)d(section)g(describ)q(es)i(in)e(detail)f(the)i
- (commands)c(a)o(v)n(ailable)h(when)i(running)g(Hask)o(ell)f(mo)q(de.)137
- 1954 y(If)g(y)o(ou)g(are)g(running)g(Emacs)g(v)o(ersion)g(19)g(and)g(ha)o(v)o
- (e)g(enabled)g Fd(menu-bar-mode)p Ff(,)d(y)o(ou)j(can)g(also)g(select)h(most)
- 75 2004 y(of)f(these)j(commands)11 b(from)h(the)j Fd(Haskell)d
- Ff(men)o(u)h(as)h(w)o(ell)f(as)h(b)o(y)g(the)g(k)o(ey)g(bindings)f(listed)h
- (b)q(elo)o(w.)75 2112 y Fd(haskell-eval)19 b(\(C-c)i(e\))179
- 2162 y Ff(This)12 b(command)e(prompts)i(y)o(ou)g(for)g(a)h(Hask)o(ell)f
- (expression)i(to)e(b)q(e)h(ev)n(aluated)g(within)f(the)h(con)o(text)g(of)f
- (the)179 2212 y(curren)o(t)j(mo)q(dule.)i(The)d(v)n(alue)f(prin)o(ted)i(m)o
- (ust)d(b)q(e)j(in)e(class)i Fd(Text)o Ff(.)75 2293 y Fd(haskell-run)20
- b(\(C-c)g(r\))179 2343 y Ff(This)f(command)d(prompts)i(y)o(ou)h(for)f(a)h
- (Hask)o(ell)f(dialogue)g(and)h(runs)h(it.)33 b(Its)19 b(b)q(eha)o(vior)g(is)g
- (similar)d(to)179 2393 y Fd(haskell-eval)p Ff(.)75 2473 y Fd
- (haskell-run-main)i(\(C-c)j(m\))179 2523 y Ff(This)14 b(command)d(runs)j(the)
- h(dialogue)d(named)h Fd(main)g Ff(in)h(the)g(curren)o(t)i(mo)q(dule.)75
- 2604 y Fd(haskell-report-ty)o(pe)j(\(C-c)i(t\))179 2654 y Ff(This)13
- b(is)g(similar)d(to)j Fd(haskell-eval)p Ff(,)d(but)k(merely)e(prin)o(ts)h
- (the)h(inferred)g(t)o(yp)q(e)f(of)g(the)g(expression)i(instead)179
- 2704 y(of)e(ev)n(aluating)g(it.)p eop
- %%Page: 6 7
- bop 75 50 a Fg(3)41 b(USING)14 b(HASKELL)h(FR)o(OM)e(EMA)o(CS)1069
- b Ff(6)75 195 y Fd(haskell-load)19 b(\(C-c)i(l\))179 245 y
- Ff(This)e(command)d(loads)j(the)h(compilation)c(unit)j(curren)o(tly)h(b)q
- (eing)g(edited)f(in)o(to)g(the)h(Hask)o(ell)f(pro)q(cess,)179
- 295 y(without)13 b(ev)n(aluating)g(an)o(y)g(of)g(its)h(con)o(ten)o(ts.)19
- b(This)14 b(is)g(used)h(to)f(c)o(hec)o(k)g(for)g(compilation)d(errors.)75
- 378 y Fd(haskell-compile)19 b(\(C-c)i(c\))179 428 y Ff(This)11
- b(is)g(similar)d(to)j Fd(haskell-load)n Ff(,)g(but)g(also)g(compiles)e(the)j
- (Lisp)f(co)q(de)h(generated)g(b)o(y)f(the)h(Y)m(ale)e(Hask)o(ell)179
- 477 y(compiler.)15 b(Since)10 b(this)f(is)h(fairly)e(slo)o(w,)h(y)o(ou)g
- (probably)g(don't)g(w)o(an)o(t)g(to)g(do)g(this)h(frequen)o(tly)f(during)h
- (program)179 527 y(dev)o(elopmen)o(t.)16 b(Commands)9 b(suc)o(h)j(as)f
- Fd(C-c)22 b(e)11 b Ff(and)g Fd(C-c)21 b(r)12 b Ff(do)f(not)g(compile)f(the)i
- (co)q(de)g(generated)h(or)f(write)179 577 y(an)o(y)k(compiled)e(co)q(de)k(in)
- o(to)d(\014les.)26 b(When)16 b(y)o(ou)g(are)h(ready)g(to)f(create)i(fully)d
- (compiled)g(co)q(de)i(and)f(sa)o(v)o(e)g(it)179 627 y(in)i(output)g(\014les,)
- i(use)f(the)g Fd(C-c)i(c)d Ff(command.)29 b(This)18 b(command)d(recursiv)o
- (ely)20 b(compiles)d(all)g(imp)q(orted)179 677 y(compilation)11
- b(units.)75 760 y Fd(haskell-run-file)18 b(\(C-c)j(C-r\))179
- 809 y Ff(Loads)14 b(the)g(curren)o(t)h(compilation)c(unit)j(and)g(then)g
- (runs)h(the)f(dialogue)f(named)g Fd(main)p Ff(.)75 892 y Fd(haskell-get-pad)
- 19 b(\(C-c)i(p\))179 942 y Ff(P)o(ops)12 b(up)f(the)h(bu\013er)h(con)o
- (taining)d(the)i(scratc)o(h)h(pad)e(for)g(the)i(curren)o(t)f(mo)q(dule,)f
- (and)g(mak)o(es)f(it)h(the)h(curren)o(t)179 992 y(bu\013er.)75
- 1075 y Fd(haskell-printers)18 b(\(C-c)j(C-p\))179 1125 y Ff(This)13
- b(command)d(p)q(ops)k(up)f(a)g(bu\013er)h(that)f(lets)h(y)o(ou)e(set)i(Hask)o
- (ell)f(compiler)f(prin)o(t)h(options)f(from)g(a)g(men)o(u.)179
- 1175 y(Use)j Fd(?)j Ff(to)c(get)g(further)g(help.)179 1241
- y(Y)m(ou)f(can)h(sp)q(ecify)h(prin)o(ter)f(settings)h(for)e(a)h(particular)g
- (program)e(within)h(its)h(unit)f(\014le.)19 b(See)14 b(section)h(6.)75
- 1324 y Fd(haskell-optimizer)o(s)k(\(C-c)i(C-o\))179 1374 y
- Ff(This)15 b(command)e(p)q(ops)i(up)h(a)f(bu\013er)h(that)g(lets)f(y)o(ou)g
- (set)i(Hask)o(ell)d(compiler)g(optimizer)g(settings)j(from)c(a)179
- 1424 y(men)o(u.)k(Use)e Fd(?)j Ff(to)c(get)g(further)g(help.)179
- 1490 y(Y)m(ou)f(can)h(sp)q(ecify)h(optimizer)d(settings)j(for)e(a)h
- (particular)g(program)e(within)h(its)h(unit)g(\014le.)k(See)c(section)h(6.)75
- 1573 y Fd(haskell-exit)k(\(C-c)i(q\))179 1623 y Ff(This)14
- b(command)d(terminates)i(the)i(Hask)o(ell)e(subpro)q(cess.)20
- b(It)14 b(lea)o(v)o(es)g(all)f(bu\013ers)i(op)q(en.)75 1706
- y Fd(haskell-switch)k(\(C-c)i(h\))179 1756 y Ff(P)o(ops)14
- b(up)g(the)g Fd(*haskell*)e Ff(bu\013er)j(and)f(mak)o(es)f(it)g(the)i(curren)
- o(t)g(bu\013er.)75 1839 y Fd(haskell-kill)k(\(C-c)i(C-k\))179
- 1889 y Ff(Delete)14 b(the)h(curren)o(t)g(con)o(ten)o(ts)g(of)e(the)i
- Fd(*haskell*)d Ff(bu\013er.)75 1972 y Fd(haskell-interrupt)18
- b(\(C-c)j(i\))179 2022 y Ff(This)d(command)e(sends)k(an)f(in)o(terrupt)g(to)f
- (the)i(Hask)o(ell)e(subpro)q(cess.)34 b(Y)m(ou)19 b(can)f(use)i(it)e(to)h
- (terminate)179 2071 y(execution)13 b(of)g(a)f(running)h(program)e(\(for)h
- (example,)g(if)f(it)i(gets)g(stuc)o(k)h(in)e(an)h(in\014nite)f(lo)q(op\))h
- (and)f(return)i(to)179 2121 y(the)g(command)d(lo)q(op.)75 2204
- y Fd(haskell-command)19 b(\(C-c)i(:\))179 2254 y Ff(Y)m(ou)12
- b(can)g(submit)f(commands)f(directly)j(to)f(the)h(command)c(in)o(terface)k
- (with)f(this)g(command.)j(See)e(section)179 2304 y(5)g(for)h(more)f
- (information)e(ab)q(out)j(the)g(command)d(in)o(terface.)75
- 2387 y Fd(haskell)179 2437 y Ff(Starts)16 b(up)g(a)f(Hask)o(ell)h(subpro)q
- (cess,)i(p)q(opping)d(up)h(the)g Fd(*haskell*)e Ff(bu\013er.)24
- b(Y)m(ou)16 b(normally)d(don't)i(need)179 2487 y(to)e(do)g(this)g(explicitly)
- f(since)i(the)g(default)f(b)q(eha)o(vior)g(for)g(an)o(y)g(of)f(the)i
- (commands)d(that)i(cause)h(co)q(de)g(to)f(b)q(e)179 2536 y(ev)n(aluated)g(or)
- h(compiled)f(is)g(to)h(start)h(up)e(a)h(Hask)o(ell)f(subpro)q(cess)k(if)c
- (there)i(isn't)e(already)h(one)g(running.)75 2619 y Fd(haskell-mode)179
- 2669 y Ff(Puts)g(the)h(curren)o(t)g(bu\013er)g(in)o(to)e(the)i(Hask)o(ell)e
- (editing)h(mo)q(de.)p eop
- %%Page: 7 8
- bop 75 50 a Fg(4)41 b(USING)14 b(HASKELL)h(ON)f(THE)g(MA)o(CINTOSH)918
- b Ff(7)75 195 y Fd(haskell-tutorial)179 245 y Ff(Starts)14
- b(the)h(online)e(Hask)o(ell)g(tutorial.)137 361 y(In)i(addition,)e(the)i
- (minibu\013er)e(commands)f Fd(M-p)i Ff(and)g Fd(M-n)g Ff(allo)o(w)f(y)o(ou)h
- (to)g(searc)o(h)i(bac)o(k)e(and)h(forth)f(through)75 411 y(the)g(history)f
- (of)f(the)i(last)f(30)f(expressions)j(y)o(ou)d(ha)o(v)o(e)h(t)o(yp)q(ed)h(in)
- f(when)g(Hask)o(ell)g(prompts)f(y)o(ou)h(for)f(something)g(to)75
- 461 y(ev)n(aluate.)75 602 y Fh(3.4)56 b(Customization)17 b(Ho)r(oks)75
- 703 y Ff(Y)m(ou)h(can)g(customize)h(some)e(asp)q(ects)j(of)e(the)h(Emacs)f
- (Hask)o(ell)g(in)o(terface)h(b)o(y)f(c)o(hanging)g(the)h(v)n(alues)f(of)g
- (these)75 753 y(v)n(ariables)13 b(\(e.g.,)g(in)g(y)o(our)h
- Fd(.emacs)o Ff(\).)75 869 y Fd(haskell-program-n)o(ame)179
- 919 y Ff(This)i(is)f(the)i(name)d(of)h(the)i(executable)g(that)f(is)g(run)g
- (as)g(the)g(inferior)f(Hask)o(ell)h(pro)q(cess.)25 b(It)16
- b(defaults)g(to)179 969 y(the)e(v)n(alue)g(of)f(the)h(en)o(vironmen)o(t)f(v)n
- (ariable)g Fd(HASKELLPROG)n Ff(.)75 1052 y Fd(haskell-auto-crea)o(te-pr)o
- (ocess)179 1102 y Ff(If)g(this)h(v)n(ariable)e(is)i(true)g(\(the)h
- (default\),)e(then)h(an)o(y)f(of)g(the)i(Hask)o(ell)e(commands)e(that)j(in)o
- (teract)g(with)f(the)179 1152 y(inferior)h(Hask)o(ell)h(pro)q(cess)i
- (automatically)12 b(start)k(up)f(suc)o(h)h(a)f(pro)q(cess)i(if)e(one)g(do)q
- (esn't)h(already)f(exist.)22 b(If)179 1202 y(false,)13 b(all)g(of)g(these)i
- (commands)d(just)i(refuse)h(to)f(do)f(an)o(ything)g(useful.)75
- 1285 y Fd(haskell-auto-swit)o(ch-in)o(put)179 1334 y Ff(If)g(this)h(v)n
- (ariable)f(is)h(true)h(\(the)f(default\),)g(then)g(Emacs)f(automatically)e(p)
- q(ops)j(up)g(the)h Fd(*haskell*)d Ff(bu\013er)179 1384 y(and)i(mak)o(es)f(it)
- g(the)i(curren)o(t)h(bu\013er)f(whenev)o(er)g(the)g(inferior)e(Hask)o(ell)h
- (pro)q(cess)i(issues)f(a)f(request)i(to)d(read)179 1434 y(from)f
- Fd(stdin)o Ff(.)18 b(Remem)o(b)q(er)12 b(that)i(input)g(requests)i(arriv)o(e)
- d(async)o(hronously!)75 1517 y Fd(haskell-ask-befor)o(e-sav)o(ing)179
- 1567 y Ff(If)d(this)h(v)n(ariable)e(is)i(true)g(\(the)h(default\),)e(then)i
- (Emacs)e(explicitly)g(asks)h(y)o(ou)f(if)g(y)o(ou)g(w)o(an)o(t)g(to)h(sa)o(v)
- o(e)f(mo)q(di\014ed)179 1617 y(bu\013ers)17 b(con)o(taining)d(Hask)o(ell)h
- (source)i(\014les)f(b)q(efore)g(ev)n(aluating)f(or)g(running)g(an)o(ything.)
- 23 b(If)15 b(it's)g(false,)g(all)179 1666 y(of)e(these)i(bu\013ers)h(are)e
- (simply)e(sa)o(v)o(ed)i(quietly)m(.)75 1749 y Fd(haskell-initial-p)o(rinte)o
- (rs)179 1799 y Ff(This)h(v)n(ariable)f(con)o(tains)h(the)h(prin)o(ters)g(to)f
- (set)h(when)f(starting)h(a)e(new)i(Hask)o(ell)f(pro)q(cess,)h(sp)q(eci\014ed)
- h(as)e(a)179 1849 y(list)c(of)g(strings.)17 b(\(Some)11 b(p)q(eople)h(prefer)
- h(di\013eren)o(t)f(default)f(prin)o(ters)i(for)e(the)h(Emacs)f(in)o(terface)h
- (than)f(when)179 1899 y(running)i(Hask)o(ell)h(using)f(the)i(v)n(anilla)c
- (command)h(in)o(terface.\))75 2061 y Fi(4)69 b(Using)23 b(Hask)n(ell)e(on)i
- (the)g(Macin)n(tosh)75 2177 y Ff(Y)m(ale)13 b(Hask)o(ell)f(runs)i(on)f(the)h
- (Macin)o(tosh)f(under)i(Macin)o(tosh)e(Common)d(Lisp)j(\(MCL\).)g(The)h
- (default)f(user)h(in)o(ter-)75 2227 y(face)g(on)g(the)g(Macin)o(tosh)g(is)g
- (la)o(y)o(ered)g(on)g(top)f(of)h(MCL's)f(built-in)g(Emacs-lik)o(e)f(editor,)i
- (F)m(red.)137 2301 y(This)d(section)h(assumes)e(that)h(y)o(ou)f(ha)o(v)o(e)h
- (some)f(familia)o(rit)o(y)e(with)i(the)i(Macin)o(tosh)f(\(e.g.,)f(that)h(y)o
- (ou)f(kno)o(w)g(ho)o(w)75 2351 y(to)16 b(manipulate)e(windo)o(ws)i(and)g(ab)q
- (out)g(the)h(standard)f(Macin)o(tosh)g(text)h(editing)f(facilities)f(and)h
- (\014le)g(selection)75 2401 y(dialogs\).)h(The)d(items)f(on)h(the)g
- Fd(File)f Ff(and)h Fd(Edit)f Ff(men)o(us)g(are)i(fairly)d(standard)i(in)g
- (this)g(resp)q(ect.)75 2542 y Fh(4.1)56 b(In)n(teraction)18
- b(with)g(the)h(Hask)n(ell)e(Pro)r(cess)75 2644 y Ff(There)22
- b(are)f(t)o(w)o(o)f(basic)g(editor)h(commands)d(for)i(in)o(teracting)h(with)f
- (Hask)o(ell:)31 b(ev)n(aluating)19 b(and)h(prin)o(ting)g(an)75
- 2694 y(expression)15 b(\()p Fd(C-c)21 b(e)p Ff(\))14 b(and)g(running)f(a)h
- (dialogue)f(\()p Fd(C-c)21 b(r)p Ff(\).)d(They)c(op)q(erate)h(as)f(follo)o
- (ws:)p eop
- %%Page: 8 9
- bop 75 50 a Fg(4)41 b(USING)14 b(HASKELL)h(ON)f(THE)g(MA)o(CINTOSH)918
- b Ff(8)126 195 y(1.)20 b(Y)m(ou)13 b(are)h(prompted)e(for)h(a)h(Hask)o(ell)e
- (expression.)20 b(F)m(or)13 b Fd(C-c)21 b(e)p Ff(,)13 b(the)h(v)n(alue)e(of)h
- (the)h(expression)h(m)o(ust)d(b)q(e)i(in)179 245 y(class)g
- Fd(Text)o Ff(.)k(F)m(or)c Fd(C-c)21 b(r)p Ff(,)13 b(the)i(v)n(alue)e(m)o(ust)
- g(b)q(e)h(of)f(t)o(yp)q(e)i Fd(IO\(\))o Ff(.)126 328 y(2.)20
- b(All)13 b(bu\013ers)i(con)o(taining)e(Hask)o(ell)g(source)i(\014les)g(are)f
- (sa)o(v)o(ed.)126 411 y(3.)20 b(The)14 b(compilation)d(unit)j(b)q(eing)g
- (edited)g(is)g(loaded)f(in)o(to)g(the)i(Hask)o(ell)e(system)h(if)f(necessary)
- m(.)126 494 y(4.)20 b(The)15 b(expression)h(is)f(ev)n(aluated)g(or)g(run)g
- (in)g(the)h(con)o(text)f(of)g(the)g(mo)q(dule)f(con)o(taining)g(the)h(cursor)
- h(\(there)179 543 y(ma)o(y)c(b)q(e)i(more)f(than)h(one)g(mo)q(dule)f(in)g(a)h
- (\014le\).)126 626 y(5.)20 b(The)14 b Fd(Listener)e Ff(windo)o(w)h(p)q(ops)i
- (up)f(to)f(displa)o(y)g(the)i(result.)137 742 y(Y)m(ou)h(can)h(in)o(teract)g
- (with)g(Hask)o(ell)f(b)o(y)g(issuing)g(F)m(red)h(commands,)e(or)i(b)o(y)f
- (selecting)h(commands)d(from)h(the)75 792 y Fd(Haskell)9 b
- Ff(men)o(u.)16 b(The)c(basic)f(Hask)o(ell)f(command)e(in)o(terpreter,)13
- b(describ)q(ed)g(in)d(section)i(5,)e(runs)i(in)e(the)i Fd(Listener)75
- 842 y Ff(windo)o(w.)29 b(This)18 b(windo)o(w)f(also)g(receiv)o(es)i(I/O)f(op)
- q(erations)g(on)g Fd(stdin)e Ff(and)i Fd(stdout)e Ff(and)i(is)g(used)g(to)g
- (displa)o(y)75 892 y(v)n(arious)13 b(status)i(and)f(diagnostic)f(messages.)
- 137 966 y(The)21 b(mo)q(de)f(line)f(for)i(the)g Fd(Listener)d
- Ff(windo)o(w)i(includes)h(information)c(ab)q(out)k(the)g(status)g(of)f(Hask)o
- (ell's)75 1016 y(command)13 b(lo)q(op.)22 b(The)16 b(v)n(alues)g(are:)22
- b Fd(ready)14 b Ff(\(the)i(pro)q(cess)i(is)d(w)o(aiting)g(for)g(a)g
- (command\),)e Fd(busy)i Ff(\(the)h(pro)q(cess)75 1066 y(is)e(busy)h(pro)q
- (cessing)h(a)e(command\),)d(and)j Fd(input)g Ff(\(the)h(pro)q(cess)h(is)e(w)o
- (aiting)f(for)h(input)h(on)f Fd(stdin)o Ff(\).)20 b(Note)14
- b(that,)75 1116 y(since)g(the)h(Hask)o(ell)e(command)d(lo)q(op)j(pro)q(cess)j
- (runs)e(async)o(hronously)m(,)f(y)o(ou)g(can)h(do)f(other)h(things)g(in)f
- (the)h(editor)75 1165 y(and)g(queue)g(up)g(more)f(commands)f(to)i(b)q(e)g
- (executed)i(ev)o(en)e(when)h(the)f(Hask)o(ell)g(pro)q(cess)h(is)f(busy)m(.)75
- 1306 y Fh(4.2)56 b(Ev)m(aluation)17 b(Con)n(text)75 1408 y
- Ff(The)h Fc(curr)n(ent)g(mo)n(dule)g Ff(for)f(ev)n(aluation)f(is)h
- (determined)h(b)o(y)f(the)i(t)o(yp)q(e)f(of)f(bu\013er)h(from)e(whic)o(h)i
- (the)g(command)75 1458 y(w)o(as)e(giv)o(en.)23 b(In)16 b(a)g
- Fd(.hs)f Ff(bu\013er,)i(the)f(curren)o(t)i(mo)q(dule)c(is)i(the)h(mo)q(dule)d
- (de\014nition)h(con)o(taining)g(the)i(cursor.)25 b(In)75 1507
- y(a)16 b(scratc)o(h)i(pad)e(bu\013er,)i(it)e(is)g(the)h(mo)q(dule)e(asso)q
- (ciated)i(with)f(the)h(pad.)25 b(In)17 b(the)g Fd(Listener)e
- Ff(bu\013er,)i(the)g(most)75 1557 y(recen)o(tly)e(used)g(mo)q(dule)d(is)i
- (remem)o(b)q(ered.)137 1632 y(The)h(Macin)o(tosh)g(in)o(terface)h(implem)o
- (en)o(ts)d(a)h Fc(scr)n(atch)i(p)n(ad)f Ff(as)g(a)f(sp)q(ecial)h(bu\013er)h
- (asso)q(ciated)g(with)e(a)g(mo)q(dule)75 1682 y(\(not)f(with)g(a)h
- (\014le!\).)j(When)d(y)o(ou)f(ev)n(aluate)g(an)g(expression)h(or)g(dialogue,)
- e(Hask)o(ell)g(arranges)i(for)f(the)h(ev)n(aluation)75 1731
- y(con)o(text)j(to)f(b)q(e)h(augmen)o(ted)e(b)o(y)h(the)h(con)o(ten)o(ts)g(of)
- f(the)g(scratc)o(h)i(pad)e(bu\013er)h(for)f(the)h(curren)o(t)g(mo)q(dule.)24
- b(\(This)75 1781 y(happ)q(ens)13 b(ev)o(en)g(if)f(the)h(command)c(w)o(as)k
- (not)f(actually)f(issued)j(from)c(the)j(scratc)o(h)h(bad)e(bu\013er.\))19
- b(Y)m(ou)12 b(can)g(use)h(the)75 1831 y(scratc)o(h)i(pad)f
- Fd(Pad)21 b(for)g(module)g(Main)13 b Ff(to)h(pla)o(y)e(with)i(the)g(system)g
- (without)g(creating)g(a)f Fd(.hs)h Ff(\014le.)k(The)c Fd(C-c)21
- b(p)75 1881 y Ff(command)11 b(p)q(ops)j(up)g(the)h(bu\013er)g(con)o(taining)d
- (the)j(scratc)o(h)g(pad)f(for)f(the)i(curren)o(t)g(mo)q(dule.)75
- 2022 y Fh(4.3)56 b(Hask)n(ell)17 b(Commands)75 2123 y Ff(The)h
- Fd(Haskell)e Ff(men)o(u)g(con)o(tains)h(the)h(Hask)o(ell-sp)q(eci\014c)g
- (commands.)26 b(Eac)o(h)18 b(of)e(these)j(commands)c(also)i(has)g(a)75
- 2173 y(F)m(red)d(k)o(ey)g(binding,)f(as)h(follo)o(ws.)75 2289
- y Fd(Eval)21 b(Expression)f(\(C-c)h(e\))179 2339 y Ff(This)12
- b(command)d(prompts)i(y)o(ou)h(for)f(a)h(Hask)o(ell)f(expression)i(to)f(b)q
- (e)h(ev)n(aluated.)k(Ev)n(aluation)10 b(o)q(ccurs)k(in)d(the)179
- 2388 y(con)o(text)j(of)g(the)g(curren)o(t)i(mo)q(dule.)g(The)e(result)h(is)f
- (then)g(prin)o(ted;)g(the)h(v)n(alue)e(m)o(ust)g(b)q(e)h(in)g(class)g
- Fd(Text)p Ff(.)75 2471 y Fd(Run)21 b(Dialogue)f(\(C-c)h(r\))179
- 2521 y Ff(This)14 b(command)d(prompts)i(y)o(ou)g(for)h(a)f(Hask)o(ell)h
- (dialogue)e(and)i(runs)h(it.)75 2604 y Fd(Type)21 b(Check)g(Expression)e
- (\(C-c)i(t\))179 2654 y Ff(This)e(is)f(similar)f(to)i Fd(Eval)i(Expression)m
- Ff(,)f(but)f(merely)f(prin)o(ts)h(the)h(inferred)g(t)o(yp)q(e)f(of)f(the)i
- (expression)179 2704 y(instead)14 b(of)f(ev)n(aluating)g(it.)p
- eop
- %%Page: 9 10
- bop 75 50 a Fg(4)41 b(USING)14 b(HASKELL)h(ON)f(THE)g(MA)o(CINTOSH)918
- b Ff(9)75 195 y Fd(Load)21 b(File)g(\(C-c)g(l\))179 245 y Ff(This)14
- b(command)d(loads)j(the)h(compilation)c(unit)k(curren)o(tly)g(b)q(eing)f
- (edited)h(in)o(to)e(Hask)o(ell,)h(without)g(ev)n(alu-)179 295
- y(ating)f(an)o(y)g(of)h(its)f(con)o(ten)o(ts.)20 b(This)13
- b(is)h(used)h(to)f(c)o(hec)o(k)g(for)g(compilation)d(errors.)75
- 377 y Fd(Run)21 b(File)g(\(C-c)g(C-r\))179 427 y Ff(Loads)14
- b(the)g(curren)o(t)h(compilation)c(unit)j(and)g(then)g(runs)h(the)f(dialogue)
- f(named)g Fd(main)p Ff(.)75 509 y Fd(Compile)20 b(File)h(\(C-c)g(c\))179
- 559 y Ff(This)15 b(is)g(similar)e(to)j Fd(Load)21 b(File)o
- Ff(,)15 b(but)h(also)f(compiles)f(the)i(Lisp)f(co)q(de)i(generated)f(b)o(y)g
- (the)g(Y)m(ale)e(Hask)o(ell)179 608 y(compiler.)28 b(Since)18
- b(this)f(is)h(fairly)e(slo)o(w,)i(y)o(ou)f(probably)g(don't)g(w)o(an)o(t)g
- (to)g(do)h(this)f(during)h(program)e(de-)179 658 y(v)o(elopmen)o(t.)i
- (Commands)12 b(suc)o(h)j(as)g Fd(C-c)21 b(e)14 b Ff(and)g Fd(C-c)21
- b(r)15 b Ff(do)f(not)g(compile)f(the)i(co)q(de)g(generated)h(or)f(write)179
- 708 y(an)o(y)h(compiled)e(co)q(de)k(in)o(to)d(\014les.)26 b(When)16
- b(y)o(ou)g(are)h(ready)g(to)f(create)i(fully)d(compiled)g(co)q(de)i(and)f(sa)
- o(v)o(e)g(it)179 758 y(in)i(output)g(\014les,)i(use)f(the)g
- Fd(C-c)i(c)d Ff(command.)29 b(This)18 b(command)d(recursiv)o(ely)20
- b(compiles)d(all)g(imp)q(orted)179 808 y(compilation)11 b(units.)75
- 890 y Fd(Scratch)20 b(Pad)i(\(C-c)e(p\))179 940 y Ff(P)o(ops)12
- b(up)f(the)h(bu\013er)h(con)o(taining)d(the)i(scratc)o(h)h(pad)e(for)g(the)i
- (curren)o(t)f(mo)q(dule,)f(and)g(mak)o(es)f(it)h(the)h(curren)o(t)179
- 989 y(bu\013er.)75 1071 y Fd(Printers)20 b(\(C-c)h(C-p\))179
- 1121 y Ff(This)14 b(command)d(p)q(ops)j(up)g(a)f(dialog)g(b)q(o)o(x)g(that)h
- (lets)h(y)o(ou)e(set)i(Hask)o(ell)e(compiler)g(prin)o(t)g(options.)179
- 1187 y(Y)m(ou)g(can)h(sp)q(ecify)h(prin)o(ter)f(settings)h(for)e(a)h
- (particular)g(program)e(within)h(its)h(unit)f(\014le.)19 b(See)14
- b(section)h(6.)75 1269 y Fd(Optimizers)20 b(\(C-c)h(C-o\))179
- 1319 y Ff(This)14 b(command)d(p)q(ops)j(up)g(a)f(dialog)g(b)q(o)o(x)g(that)h
- (lets)h(y)o(ou)e(set)i(Hask)o(ell)e(compiler)g(optimizer)f(settings.)179
- 1385 y(Y)m(ou)h(can)h(sp)q(ecify)h(optimizer)d(settings)j(for)e(a)h
- (particular)g(program)e(within)h(its)h(unit)g(\014le.)k(See)c(section)h(6.)75
- 1467 y Fd(Tutorial)179 1517 y Ff(This)e(loads)f(the)i(on-line)f(Hask)o(ell)f
- (tutorial.)17 b(The)d(tutorial)e(is)h(split)g(in)o(to)f(pages,)i(eac)o(h)f
- (of)g(whic)o(h)g(con)o(tains)179 1567 y(some)k(small)e(example)i(programs)f
- (that)i(y)o(ou)f(can)h(run.)30 b(Within)17 b(the)h(tutorial)f(windo)o(w,)h(y)
- o(ou)f(can)h(use)179 1617 y(t)o(w)o(o)13 b(additional)f(editor)h(commands:)j
- Fd(C-c)21 b(C-f)13 b Ff(to)g(go)g(forw)o(ard)g(to)h(the)g(next)g(page)g(of)f
- (the)h(tutorial,)e(and)179 1666 y Fd(C-c)21 b(C-b)13 b Ff(to)h(go)f(bac)o(kw)
- o(ard)h(to)g(the)g(previous)g(page.)75 1749 y Fd(Abort)21 b(\(C-c)g(i\))179
- 1798 y Ff(This)11 b(command)f(in)o(terrupts)i(Hask)o(ell)g(and)f(causes)j(it)
- d(to)h(return)h(to)e(the)i(command)c(lo)q(op.)16 b(Y)m(ou)c(can)g(use)g(it)
- 179 1848 y(to)i(terminate)f(execution)h(of)g(a)f(running)h(program)e(\(for)i
- (example,)e(if)h(it)h(gets)g(stuc)o(k)h(in)e(an)h(in\014nite)g(lo)q(op\))179
- 1898 y(and)f(return)j(to)d(the)i(command)c(lo)q(op.)137 2011
- y(Note)k(that)f(y)o(ou)f(can)h(get)g(a)g(complete)f(list)h(of)f(F)m(red)h(k)o
- (ey)g(bindings)f(b)o(y)h(doing)f Fd(C-?)o Ff(.)75 2151 y Fh(4.4)56
- b(Customization)17 b(Ho)r(oks)75 2251 y Ff(Y)m(ou)11 b(can)g(customize)g
- (some)f(asp)q(ects)j(of)e(the)g(Hask)o(ell)g(user)h(in)o(terface)g(b)o(y)f(c)
- o(hanging)f(the)i(v)n(alue)f(of)f(these)j(v)n(ariables)75 2301
- y(\(for)h(example,)e(in)h(y)o(our)h(initialization)d(\014le\).)75
- 2414 y Fd(*mac-auto-switch-)o(input)o(*)179 2464 y Ff(If)h(this)g(v)n
- (ariable)f(is)h(true)h(\(the)h(default\),)d(then)i(Hask)o(ell)f
- (automatically)d(p)q(ops)k(up)f(the)h Fd(Listener)e Ff(windo)o(w)179
- 2514 y(and)i(selects)j(it)e(as)g(the)g(activ)o(e)g(windo)o(w)f(whenev)o(er)i
- (Hask)o(ell)f(issues)h(a)e(request)j(to)e(read)g(from)e Fd(stdin)o
- Ff(.)75 2596 y Fd(*mac-ask-before-s)o(aving)o(*)179 2646 y
- Ff(If)d(this)h(v)n(ariable)f(is)h(true)h(\(the)g(default\),)f(then)g(Hask)o
- (ell)g(explicitly)f(asks)h(y)o(ou)f(if)g(y)o(ou)h(w)o(an)o(t)f(to)h(sa)o(v)o
- (e)g(mo)q(di\014ed)179 2696 y(bu\013ers)j(b)q(efore)g(ev)n(aluating)d(or)i
- (running)f(an)o(ything.)17 b(If 150 y(\(INCLUDING)15
- b(D)o(AMA)o(GES)h(F)o(OR)f(LOSS)h(OF)g(BUSINESS)h(PR)o(OFITS,)f(BUSINESS)g
- (INTERR)o(UPTION,)75 2200 y(LOSS)21 b(OF)g(BUSINESS)g(INF)o(ORMA)m(TION,)f
- (AND)g(THE)h(LIKE\))g(ARISING)f(OUT)h(OF)g(THE)f(USE)h(OR)75
- 2250 y(INABILITY)c(TO)g(USE)g(MA)o(CINTOSH)g(COMMON)g(LISP)g(EVEN)g(IF)g
- (APPLE)g(HAS)g(BEEN)g(AD)o(VISED)75 2299 y(OF)d(THE)g(POSSIBILITY)h(OF)g
- (SUCH)f(D)o(AMA)o(GES.)137 2374 y(BECA)o(USE)g(SOME)g(ST)m(A)m(TES)e(DO)h
- (NOT)h(ALLO)o(W)e(THE)i(EX)o(CLUSION)f(OR)g(LIMIT)m(A)m(TION)g(OF)g(LIA-)75
- 2424 y(BILITY)j(F)o(OR)f(CONSEQUENTIAL)h(OR)f(INCIDENT)m(AL)g(D)o(AMA)o(GES,)
- g(THE)g(ABO)o(VE)h(LIMIT)m(A)m(TIONS)75 2474 y(MA)m(Y)c(NOT)h(APPL)m(Y)g(TO)f
- (YOU.)h(Apple's)f(liabilit)o(y)e(to)i(y)o(ou)g(for)g(actual)g(damages)f(for)h
- (an)o(y)g(cause)h(whatso)q(ev)o(er,)75 2523 y(and)i(regardless)i(of)e(the)h
- (form)d(of)i(the)h(action)f(\(whether)i(in)e(con)o(tract,)h(tort)g
- (\(including)e(negligence\),)i(pro)q(duct)75 2573 y(liabilit)o(y)11
- b(or)j(otherwise\),)h(will)d(b)q(e)i(limited)e(to)i($50.)p
- eop
- %%Page: 11 12
- bop 75 50 a Fg(5)41 b(THE)14 b(COMMAND)h(INTERF)-5 b(A)o(CE)1101
- b Ff(11)75 195 y Fi(5)69 b(The)23 b(Command)f(In)n(terface)75
- 310 y Ff(When)13 b(y)o(ou)f(run)h(the)g(Hask)o(ell)g(executable)g
- Fd($HASKELLPROG)e Ff(directly)m(,)h(it)g(puts)i(y)o(ou)e(in)o(to)g(a)g
- (command)e(lo)q(op)i(that)75 360 y(allo)o(ws)e(y)o(ou)i(to)f(compile,)f
- (load,)h(and)h(run)g(programs.)k(This)11 b(section)i(giv)o(es)e(brief)h
- (descriptions)h(of)e(all)f(commands)75 410 y(recognized)15
- b(b)o(y)f(the)g(command)d(in)o(terface.)137 483 y(The)i(command)c(in)o
- (terface)k(main)o(tains)d(a)h(single)h(scratc)o(h)h(pad)f(for)g(Hask)o(ell)g
- (source)h(co)q(de.)18 b(An)o(y)12 b(line)g(starting)75 533
- y(with)j Fd(:)g Ff(is)g(assumed)h(to)f(b)q(e)h(a)f(command.)20
- b(Other)c(lines)g(are)f(added)h(to)f(the)h(curren)o(t)h(con)o(ten)o(ts)g(of)e
- (the)h(scratc)o(h)75 583 y(pad.)h(There)c(is)f(only)g(one)g(pad)g(and)g(it)f
- (is)h(asso)q(ciated)h(with)f(the)g(curren)o(t)i(mo)q(dule)c(that)i(the)h
- (system)f(has)g(fo)q(cused)75 633 y(on,)i(as)g(selected)i(b)o(y)e(the)h
- Fd(:module)e Ff(command)f(or)i(loading)f(a)h(Hask)o(ell)g(program.)k(This)c
- (mo)q(dule)f(name)g(is)h(used)75 683 y(as)i(the)h(prompt.)25
- b(Whenev)o(er)17 b(an)f(error)h(is)f(encoun)o(tered)j(during)d(compilation)d
- (of)j(the)h(pad,)f(the)h(pad)f(rev)o(erts)75 732 y(to)g(whatev)o(er)i(v)n
- (alue)d(last)i(compiled)d(successfully)m(.)27 b(The)17 b(command)d(in)o
- (terface)j(scratc)o(h)g(pad)g(is)f(not)g(in)o(tended)75 782
- y(for)f(serious)h(program)d(dev)o(elopmen)o(t)i(but)g(rather)h(serv)o(es)h
- (as)e(a)g(place)g(to)g(easily)g(sa)o(v)o(e)g(a)g(few)g(de\014nitions)g(while)
- 75 832 y(debugging)e(a)h(program.)137 906 y(Command)9 b(argumen)o(ts)j(are)g
- (separated)i(b)o(y)e(whitespace.)18 b(All)12 b(commands)e(ma)o(y)g(b)q(e)j
- (abbreviated)f(using)g(the)75 956 y(shortest)j(unique)f(pre\014x)h(of)e(the)i
- (command)c(name.)17 b(Here)e(are)f(brief)g(descriptions)h(of)e(the)i
- (commands.)75 1068 y Fd(:=)21 b Fc(exp)179 1118 y Ff(Ev)n(aluates)14
- b(the)g(Hask)o(ell)f(expression)i Fc(exp)g Ff(\(whic)o(h)f(m)o(ust)f(b)q(e)h
- (in)g(class)g Fd(Text)p Ff(\))f(and)h(prin)o(ts)g(the)g(result.)75
- 1200 y Fd(:@)21 b Fc(exp)179 1250 y Ff(Runs)14 b(the)g(Hask)o(ell)g(dialogue)
- e Fc(exp)j Ff(in)e(the)i(curren)o(t)g(mo)q(dule.)75 1332 y
- Fd(:>)21 b Fc(exp)179 1382 y Ff(This)14 b(executes)i Fc(exp)p
- Ff(,)e(whic)o(h)f(m)o(ust)g(b)q(e)i(of)e(t)o(yp)q(e)h Fd(Text)21
- b(a)h(=>)f(IO)h(a)p Ff(,)13 b(and)h(prin)o(ts)g(the)g(result.)75
- 1464 y Fd(::)43 b Fc(exp)179 1514 y Ff(This)20 b(is)f(similar)f(to)h(the)i
- Fd(:=)e Ff(command,)f(but)i(merely)f(prin)o(ts)h(the)h(inferred)f(t)o(yp)q(e)
- h(of)e Fc(exp)h Ff(instead)h(of)179 1564 y(ev)n(aluating)12
- b(it.)75 1646 y Fd(:clear)179 1696 y Ff(Clear)i(the)g(scratc)o(h)h(pad.)75
- 1778 y Fd(:list)179 1827 y Ff(Prin)o(ts)f(out)g(the)g(scratc)o(h)i(pad.)75
- 1909 y Fd(:module)k Fc(name)179 1959 y Ff(Selects)14 b(the)g(mo)q(dule)e(to)h
- (use)h(as)f(con)o(text)h(for)f(subsequen)o(t)i(ev)n(aluations.)i(The)d(mo)q
- (dule)d(m)o(ust)i(b)q(e)g(presen)o(t)179 2009 y(in)j(the)h(most)e(recen)o
- (tly en)o(tation.)75
- 1758 y Fh(6.2)56 b(Compilation)17 b(Unit)h(Files)75 1859 y
- Ff(A)d(unit)f(\014le)h(\(one)g(with)f(the)h Fd(.hu)f Ff(extension\))i(con)o
- (tains)e(a)h(list)f(of)g(\014le)h(names)e(and)i(compiler)e(options,)h(one)h
- (p)q(er)75 1909 y(line.)j(File)13 b(names)g(and)h(options)f(ma)o(y)f(app)q
- (ear)j(in)e(an)o(y)g(order)i(inside)f(the)g Fd(.hu)g Ff(\014le.)k(Sp)q
- (eci\014cally)m(,)137 2025 y Fe(\017)j Ff(A)d(\014le)h(name)e(with)i(a)f
- Fd(.hs)g Ff(or)g Fd(.lhs)g Ff(extension)h(sp)q(eci\014es)i(a)d(constituen)o
- (t)i(Hask)o(ell)e(source)i(\014le)e(of)g(the)179 2075 y(compilation)11
- b(unit.)137 2158 y Fe(\017)21 b Ff(A)15 b(\014le)g(name)g(with)f(a)h
- Fd(.hi)g Ff(or)g Fd(.lhi)g Ff(extension)h(sp)q(eci\014es)h(an)e(in)o(terface)
- h(\014le)f(that)g(is)h(imp)q(orted)e(in)o(to)g(the)179 2208
- y(compilation)d(unit.)137 2291 y Fe(\017)21 b Ff(A)11 b(\014le)g(name)f(with)
- h(a)g Fd(.hu)g Ff(extension)h(sp)q(eci\014es)h(a)e(compilation)d(unit)j(to)g
- (imp)q(ort.)16 b(\(If)11 b(y)o(ou)g(w)o(an)o(t)f(to)i(imp)q(ort)179
- 2341 y(a)h(single)h(source)h(\014le)f(that)g(y)o(ou)f(wish)h(to)g(compile)e
- (separately)m(,)i(y)o(ou)f(m)o(ust)g(create)i(a)f(unit)f(\014le)h(for)g
- (it.\))137 2424 y Fe(\017)21 b Ff(Compiler)14 b(options)h(are)i(pre\014xed)g
- (with)e(a)h(colon.)23 b(The)17 b(compiler)d(options)h(that)h(y)o(ou)g(can)g
- (include)g(in)f(a)179 2474 y Fd(.hu)e Ff(\014le)h(are)g(summarized)e(in)i
- (Figure)g(1.)137 2557 y Fe(\017)21 b Ff(T)m(o)14 b(sp)q(ecify)i(the)g(imp)q
- (ortation)c(of)j(programs)f(written)i(in)e(other)i(languages)f(\(see)h
- (section)g(6.4\),)e(y)o(ou)h(can)179 2607 y(include)i(\014le)h(names)f(with)g
- (a)g(a)h Fd(.scm)e Ff(or)i Fd(.lisp)e Ff(extension)j(\(for)e(Lisp)g(co)q
- (de\))i(or)e(a)h Fd(.o)f Ff(extension)h(\(for)179 2656 y(other)c
- (languages\).)p eop
- %%Page: 14 15
- bop 75 50 a Fg(6)41 b(THE)14 b(COMPILA)m(TION)h(SYSTEM)1100
- b Ff(14)p 75 201 1856 2 v 75 692 2 492 v 128 266 a Fd(:input)12
- b Fc(\014lename)76 b Ff(Sp)q(ecify)14 b(di\013eren)o(t)h(\014lename)e
- (directory)h(defaults)g(for)g(source)h(\014les.)128 316 y Fd(:output)d
- Fc(\014lename)54 b Ff(Sp)q(ecify)14 b(di\013eren)o(t)h(\014lename)e
- (directory)h(defaults)g(for)g(output)g(\014les.)128 366 y Fd(:import)e
- Fc(\014lename)54 b Ff(Sp)q(ecify)14 b(di\013eren)o(t)h(\014lename)e
- (directory)h(defaults)g(for)g(imp)q(orted)e(units.)128 416
- y Fd(:stable)216 b Ff(Don't)13 b(try)h(to)g(recompile)f(this)h(unit)f(if)g
- (already)h(compiled)e(or)i(loaded.)128 465 y Fd(:prelude)194
- b Ff(Don't)13 b(implicitly)e(imp)q(ort)h(the)i(standard)h(prelude.)128
- 515 y Fd(:p=)e Fc(printers)148 b Ff(Sp)q(ecify)14 b(prin)o(ters)h(for)e(this)
- h(unit.)128 565 y Fd(:o=)f Fc(optimizers)104 b Ff(Sp)q(ecify)14
- b(optimizers)f(for)g(this)h(unit.)128 615 y Fd(:o=)21 b(all)217
- b Ff(T)m(urn)14 b(on)f(all)g(optimizers.)128 665 y Fd(:chunk-size)e
- Fc(n)94 b Ff(Set)14 b(c)o(h)o(unk)g(size)h(for)f(Lisp)f(compiler.)p
- 1929 692 V 75 694 1856 2 v 656 831 a(Figure)h(1:)j(Compilation)11
- b(unit)j(options)137 981 y(Y)m(ou)e(m)o(ust)f(supply)h(extensions)i(for)e
- (all)f(of)g(the)i(\014le)f(names)g(listed)g(in)g(the)h(unit)f(\014le.)17
- b(The)c(directory)g(for)f(b)q(oth)75 1031 y(source)17 b(\014les)e(and)h(imp)q
- (orted)e(units)i(\(as)f(w)o(ell)g(as)g(that)h(for)f(the)h(output)f(\014les)h
- (of)f(the)h(compilation\))d(defaults)i(to)75 1081 y(the)f(same)e(directory)i
- (as)g(the)g Fd(.hu)e Ff(\014le,)h(although)f(y)o(ou)h(can)h(sp)q(ecify)f
- (di\013eren)o(t)i(defaults)e(using)g(the)h(compilation)75 1131
- y(unit)g(options)f(listed)h(in)g(\014gure)g(1.)137 1205 y(Compiling)e(a)i
- (unit)g(with)g(the)i Fd(C-c)21 b(c)14 b Ff(or)h Fd(:compile)e
- Ff(normally)e(writes)16 b(t)o(w)o(o)e(output)h(\014les:)k(an)c(ob)r(ject)g
- (co)q(de)75 1255 y(\014le)g(and)g(a)g(compiled)e(in)o(terface)j(\014le.)22
- b(Both)15 b(of)g(these)h(\014les)g(con)o(tain)e(Lisp)h(co)q(de.)23
- b(The)15 b(name)f(of)h(the)h(compiled)75 1305 y(in)o(terface)j(\014le)g(is)g
- (su\016xed)g(with)f Fd(-hci)o Ff(.)33 b(The)19 b(extension)g(used)h(for)e
- (the)h(output)g(\014les)g(v)n(aries)g(dep)q(ending)g(on)75
- 1355 y(the)g(underlying)g(Lisp)f(implemen)o(tation.)29 b(F)m(or)19
- b(example,)f(compiling)e Fd(foo.hu)h Ff(in)h(the)i(CMU-based)f(system)75
- 1405 y(pro)q(duces)c Fd(foo-hci.scm)d Ff(and)i Fd(foo.sparcf)e
- Ff(as)h(output.)137 1479 y(If)j(the)g(unit)g(con)o(tains)g(man)o(y)e(source)j
- (\014les,)g(or)f(v)o(ery)g(long)f(\014les,)h(the)h(co)q(de)g(\014le)f(is)f
- (automatically)e(split)j(up)75 1529 y(in)o(to)g(smaller)g(c)o(h)o(unks)h(to)g
- (mak)o(e)f(it)h(easier)g(for)g(the)h(Lisp)f(compiler)e(to)i(pro)q(cess.)30
- b(The)17 b(individual)e(pieces)k(are)75 1579 y(giv)o(en)13
- b(names)g(lik)o(e)h Fd(foo-part1.sparc)o(f)m Ff(.)75 1720 y
- Fh(6.3)56 b(Separate)18 b(Compilation)75 1822 y Ff(If)d(y)o(ou)g(ha)o(v)o(e)g
- (a)g(large)g(program,)f(it)h(is)h(helpful)e(to)i(break)f(it)g(up)h(in)o(to)f
- (smaller)e(pieces)k(that)f(can)f(b)q(e)h(separately)75 1871
- y(compiled.)g(In)d(order)h(to)f(do)g(this,)g(the)h(compiler)e(m)o(ust)g(ha)o
- (v)o(e)h(information)e(ab)q(out)i(the)h(in)o(terfaces)g(b)q(et)o(w)o(een)g
- (the)75 1921 y(compilation)d(units.)18 b(There)d(are)f(t)o(w)o(o)g(t)o(yp)q
- (es)h(of)e(in)o(terfaces:)126 2037 y(1.)20 b(Y)m(ou)15 b(can)g(create)i(an)e
- (in)o(terface)h(\()p Fd(.hi)o Ff(\))g(\014le)f(for)g(an)o(y)g(mo)q(dule)f
- (and)h(include)g(it)g(in)g(units)g(whic)o(h)g(reference)179
- 2087 y(that)f(mo)q(dule.)126 2170 y(2.)20 b(Compiling)7 b(a)j(mo)q(dule)g
- (implem)o(en)o(tation)e(also)i(creates)i(an)e(in)o(terface)i(whic)o(h)e(is)h
- (more)e(detailed)i(than)f(those)179 2220 y(in)j Fd(.hi)g Ff(\014les)i
- (\(these)g(are)f(stored)h(in)f Fd(-hci)f Ff(\014les)h(when)g(compiling)e(to)h
- (a)h(\014le\).)137 2336 y(A)21 b(compilation)c(unit)j(ma)o(y)e(imp)q(ort)h
- (an)h(outside)g(mo)q(dule)f(b)o(y)h(referencing)h(either)g(of)f(these)h(in)o
- (terfaces.)75 2386 y(Ho)o(w)o(ev)o(er,)14 b(there)h(are)f(signi\014can)o(t)g
- (di\013erences)i(b)q(et)o(w)o(een)f(the)g(t)o(w)o(o.)137 2461
- y(When)e(a)g(unit)g(\014le)f(con)o(tains)h(the)h(name)d(of)i(another)g(unit)g
- (\014le,)f(this)h(included)g(unit)g(is)f(compiled)g(b)q(efore)h(the)75
- 2511 y(curren)o(t)j(unit)e(and)h(the)g(detailed)f(in)o(terface)i(information)
- 11 b(for)j(the)i(imp)q(orted)d(unit)i(collected)g(b)o(y)f(the)h(compiler)75
- 2560 y(is)h(used)i(to)e(do)g(cross-unit)h(optimizations)d(in)i(the)h(co)q(de)
- g(for)f(the)h(curren)o(t)h(unit.)25 b(The)17 b(disadv)n(an)o(tages)f(of)g
- (this)75 2610 y(approac)o(h)f(are)h(that)g(the)g(relation)f(b)q(et)o(w)o(een)
- i(compilation)c(units)i(m)o(ust)g(b)q(e)h(hierarc)o(hical,)f(and)h(an)o(y)f
- (c)o(hange)g(in)75 2660 y(an)f(imp)q(orted)e(unit)i(triggers)g(recompilation)
- e(of)h(units)h(that)g(include)g(it.)p eop
- %%Page: 15 16
- bop 75 50 a Fg(6)41 b(THE)14 b(COMPILA)m(TION)h(SYSTEM)1100
- b Ff(15)137 195 y(When)18 b(a)f(mo)q(dule)f(is)h(brough)o(t)g(in)o(to)g(a)g
- (unit)g(through)h(only)e(a)i Fd(.hi)e Ff(\014le,)i(no)f(cross)i(mo)q(dule)d
- (optimization)75 245 y(can)h(b)q(e)h(p)q(erformed)e(on)h(references)i(to)e(v)
- n(alues)g(in)f(the)i(imp)q(orted)d(mo)q(dule.)26 b(On)17 b(the)g(other)h
- (hand,)f(when)g(the)75 295 y(implemen)o(tatio)o(n)c(corresp)q(onding)k(to)f
- (the)h(in)o(terface)f(c)o(hanges,)h(this)f(do)q(es)h(not)f(require)g
- (recompilation)e(unless)75 345 y(the)g Fd(.hi)e Ff(\014le)i(is)f(also)f(c)o
- (hanged.)18 b(This)13 b(also)g(allo)o(ws)f(m)o(utually)e(recursiv)o(e)15
- b(mo)q(dules)d(to)h(b)q(e)h(separately)g(compiled,)75 394 y(something)f(that)
- h(cannot)g(b)q(e)g(done)g(without)g Fd(.hi)f Ff(\014les.)137
- 469 y(When)e(b)q(oth)g(the)g(implemen)o(tation)c(and)k(user)h(supplied)e(in)o
- (terface)i(for)e(a)g(mo)q(dule)f(are)j(part)e(of)g(a)h(compilation)75
- 519 y(unit,)k(the)h(system)f(c)o(hec)o(ks)i(for)e(agreemen)o(t)g(b)q(et)o(w)o
- (een)i(the)f(t)o(w)o(o)e(in)o(terfaces)j(and)e(noti\014es)h(y)o(ou)e(of)h(an)
- o(y)g(inconsis-)75 569 y(tencies)h(b)q(et)o(w)o(een)f(the)g(mo)q(dule)e(and)h
- (its)g(in)o(terface.)20 b(An)o(y)14 b(program)e(whic)o(h)i(uses)i
- Fd(.hi)d Ff(\014les)i(should)f(include)g(the)75 619 y Fd(.hi)f
- Ff(in)o(terface)i(in)e(an)o(y)h(unit)f(where)i(the)g(corresp)q(onding)g
- (implem)o(en)o(tations)c(are)k(de\014ned.)137 693 y(In)e(practice,)h(y)o(ou)f
- (ma)o(y)e(w)o(an)o(t)h(to)h(start)h(out)f(b)o(y)f(using)h Fd(.hi)g
- Ff(\014les)g(to)g(de\014ne)h(the)f(in)o(terfaces)h(b)q(et)o(w)o(een)h(compi-)
- 75 743 y(lation)d(units)h(as)h(y)o(ou)e(are)i(writing)e(and)h(debugging)g(y)o
- (our)g(program,)e(and)i(switc)o(h)h(to)f(imp)q(orting)e Fd(.hu)i
- Ff(\014les)g(once)75 793 y(the)h(co)q(de)h(has)f(stabilized)g(to)g(increase)h
- (the)f(amoun)o(t)e(of)i(cross)h(mo)q(dule)d(optimization.)137
- 868 y(Here)20 b(is)e(an)g(example)f(sho)o(wing)h(ho)o(w)f(y)o(ou)h(can)h(set)
- g(up)f(y)o(our)g Fd(.hu)g Ff(\014les)h(for)e(eac)o(h)i(of)f(these)i(approac)o
- (hes.)75 917 y(Supp)q(ose)h(y)o(ou)e(ha)o(v)o(e)g(a)h(program)e
- Fd(p)h Ff(that)h(consists)g(of)f(t)o(w)o(o)g(source)i(\014les)f
- Fd(a)g Ff(and)f Fd(b)h Ff(that)f(con)o(tain)h(m)o(utually)75
- 967 y(recursiv)o(e)15 b(references,)i(and)c(a)h(library)f Fd(l)h
- Ff(that)g(is)f(used)i(b)o(y)f(b)q(oth)g Fd(a)g Ff(and)f Fd(b)p
- Ff(.)137 1042 y(When)j(debugging)e(y)o(our)h(co)q(de,)h(y)o(ou)e(could)h(b)q
- (egin)g(b)o(y)g(creating)h(a)f Fd(.hi)f Ff(\014le)h(for)g(eac)o(h)h(of)e
- Fd(a)p Ff(,)h Fd(b)p Ff(,)f(and)h Fd(l)p Ff(,)g(and)75 1092
- y(structuring)g(the)f Fd(.hu)g Ff(\014les)g(lik)o(e)f(this:)75
- 1208 y Fd(p.hu:)162 1258 y(l.hu)162 1308 y(a.hu)162 1357 y(b.hu)75
- 1457 y(l.hu:)162 1507 y(l.hs)162 1557 y(l.hi)75 1656 y(a.hu:)162
- 1706 y(a.hs)162 1756 y(a.hi)162 1806 y(b.hi)162 1856 y(l.hi)75
- 1955 y(b.hu:)162 2005 y(b.hs)162 2055 y(b.hi)162 2105 y(a.hi)162
- 2154 y(l.hi)137 2271 y Ff(Then,)k(once)g(y)o(ou)e(are)h(no)g(longer)g(making)
- e(c)o(hanges)i(to)g(the)h(co)q(de)g(and)e(w)o(an)o(t)h(to)g(get)g(it)g(to)g
- (compile)e(more)75 2320 y(e\016cien)o(tly)m(,)f(y)o(ou)g(can)h(restructure)j
- (the)e Fd(.hu)e Ff(\014les)h(lik)o(e)f(this:)75 2437 y Fd(p.hu:)162
- 2487 y(l.hu)162 2536 y(a.hs)162 2586 y(a.hi)162 2636 y(b.hs)162
- 2686 y(b.hi)p eop
- %%Page: 16 17
- bop 75 50 a Fg(6)41 b(THE)14 b(COMPILA)m(TION)h(SYSTEM)1100
- b Ff(16)75 245 y Fd(l.hu:)162 295 y(l.hs)162 345 y(l.hi)137
- 461 y Ff(Note)16 b(that,)f(in)f(b)q(oth)h(cases,)i(w)o(e)e(ha)o(v)o(e)g(b)q
- (een)h(careful)f(to)g(include)g(the)h Fd(.hi)e Ff(\014les)h(in)g(the)h(same)e
- (compilation)75 511 y(unit)d(that)g(con)o(tains)g(the)h(corresp)q(onding)g
- (implemen)o(tatio)o(ns,)d(so)i(that)g(the)h(compiler)e(can)h(automatically)d
- (detect)75 560 y(inconsistencies)15 b(b)q(et)o(w)o(een)h(the)e(t)o(w)o(o.)75
- 702 y Fh(6.4)56 b(Compilation)17 b(Units)h(for)h(F)-5 b(oreign)18
- b(F)-5 b(unctions)75 803 y Ff(In)o(terface)18 b(\014les)e(that)h(de\014ne)h
- (an)e(in)o(terface)h(to)f(co)q(de)i(written)f(in)f(Lisp,)g(C,)g(or)h(other)g
- (languages)f(are)h(di\013eren)o(t)75 853 y(from)g(ordinary)i(in)o(terface)h
- (\014les)f(in)g(that)g(they)g(generate)i(some)d(amoun)o(t)f(of)i(executable)h
- (co)q(de)g(\(to)f(p)q(erform)75 903 y(con)o(v)o(ersions)14
- b(on)g(function)f(argumen)o(ts)g(and)h(results\).)19 b(Y)m(ou)13
- b Fc(must)h Ff(put)g(eac)o(h)g(foreign-co)q(de)g(in)o(terface)g(\014le)g(in)f
- (its)75 952 y(o)o(wn)f(compilation)e(unit)j(along)f(with)g(only)g(the)i(asso)
- q(ciated)f Fd(.scm)o Ff(,)g Fd(.lisp)o Ff(,)f(or)h Fd(.o)g
- Ff(\014les)g(in)f(order)i(to)e(ensure)j(that)75 1002 y(ev)o(erything)i(is)f
- (loaded)g(and)g(initialized)f(in)h(the)g(correct)i(order.)27
- b(It)16 b(do)q(esn't)h(w)o(ork)f(to)g(mix)e(foreign)i(co)q(de)h(and)75
- 1052 y(in)o(terface)d(\014les)h(in)e(the)i(same)e(compilation)e(unit)i(as)h
- (Hask)o(ell)g(source)h(\014les.)137 1127 y(If)h(y)o(ou)f(list)g(Lisp)h
- (source)h(\014les)f(with)g Fd(.scm)f Ff(or)g Fd(.lisp)g Ff(extensions)i(in)e
- (a)h(compilation)d(unit,)i(the)i(system)e(is)75 1177 y(smart)e(enough)h(to)g
- (also)g(lo)q(ok)f(for)h(corresp)q(onding)h(compiled)d(\014les,)i(and)g
- (reload)g(or)g(recompile)f(the)i(source)h(\014les)75 1226 y(if)g(necessary)m
- (.)26 b(If)16 b(y)o(ou)g(are)h(linking)e(to)h(C)g(or)h(some)e(other)i
- (language,)f(though,)g(y)o(ou)g(m)o(ust)f(compile)g(this)h(co)q(de)75
- 1276 y(y)o(ourself)e(to)f(generate)j(the)e Fd(.o)g Ff(\014les.)75
- 1417 y Fh(6.5)56 b(Recompilation)15 b(as)k(Needed)75 1519 y
- Ff(Y)m(ale)12 b(Hask)o(ell)g(attempts)g(to)h(reduce)h(the)f(amoun)o(t)e(of)h
- (pro)q(cessing)i(needed)g(when)f(compiling)d(a)j(program)e(b)o(y)h(not)75
- 1569 y(recompiling)g(units)i(that)g(ha)o(v)o(e)f(not)h(b)q(een)h(mo)q
- (di\014ed )f(->)g(\(b)h(->)f(c\))h(->)f(Either)g
- (a)g(b)h(->)f(c)75 703 y(either)g(f)g(g)h(\(Left)e(x\))i(=)f(f)h(x)75
- 753 y(either)f(f)g(g)h(\(Right)e(y\))i(=)f(g)h(y)75 853 y(thenMaybe)e(::)h
- (Maybe)g(a)h(->)f(\(a)g(->)h(Maybe)f(b\))g(->)g(Maybe)g(b)75
- 903 y(thenMaybe)f(Nothing)g(_)i(=)f(Nothing)75 953 y(thenMaybe)f(\(Just)h
- (x\))g(f)h(=)f(f)h(x)75 1052 y(curry)64 b(::)22 b(\(\(a,b\))e(->)i(c\))f(->)g
- (a)h(->)f(b)h(->)f(c)75 1102 y(curry)g(f)g(x)h(y)g(=)f(f)h(\(x,y\))75
- 1202 y(uncurry)e(::)i(\(a)f(->)g(b)h(->)f(c\))h(->)f(\(a,b\))g(->)g(c)75
- 1251 y(uncurry)f(f)i(\(x,y\))f(=)g(f)h(x)f(y)75 1351 y(copy)108
- b(::)22 b(Int)f(->)g(a)h(->)f([a])75 1401 y(copy)43 b(n)21
- b(x)h(=)g(take)e(n)i(\(repeat)e(x\))75 1500 y(lookup)h(::)g(Eq)g(a)h(=>)f
- ([\(a,b\)])g(->)g(a)h(->)f(Maybe)g(b)75 1550 y(lookup)g([])g(_)h(=)f(Nothing)
- 75 1600 y(lookup)g(\(\(key,val\))e(:)j(rest\))f(x)g(|)h(key)f(==)g(x)h(=)g
- (Just)e(val)685 1650 y(|)i(otherwise)e(=)h(lookup)g(rest)g(x)137
- 1758 y Ff(Another)d(Prelude)h(c)o(hange)e(is)g(that)h(the)f
- Fd(Assoc)g Ff(data)g(t)o(yp)q(e)g(has)h(b)q(een)g(remo)o(v)o(ed.)27
- b(The)18 b(arra)o(y)f(op)q(erators)75 1808 y(no)o(w)c(use)i(2-tuples.)137
- 1882 y(The)k Fd(_)f Ff(sym)o(b)q(ol)f(can)i(no)o(w)f(b)q(e)h(used)g(in)f(an)g
- (expression)i(to)e(denote)h(an)f(error)i(v)n(alue.)31 b Fd(_)18
- b Ff(is)g(seman)o(tically)75 1932 y(equivilen)o(t)13 b(to)h(b)q(ottom)e(but)j
- (the)f(compiler)e(will)h(use)i(a)e(nice)i(error)f(message.)k(The)c
- (de\014nition)75 2040 y Fd(foo)21 b(=)h(_)75 2148 y Ff(can)14
- b(b)q(e)f(used)i(to)e(create)h(a)f(stub)h(for)f Fd(foo)p Ff(.)k(Y)m(ale)c
- (Hask)o(ell)g(will)f(generate)i(an)f(informativ)o(e)e(error)j(message)f(if)g
- Fd(foo)75 2198 y Ff(is)h(ev)n(aluated.)137 2273 y(Another)i(new)g(feature)f
- (is)g(that)g(p)q(olymorphic)f(recursion)i(is)f(allo)o(w)o(ed.)20
- b(F)m(or)14 b(example,)g(the)i(follo)o(wing)c(co)q(de)75 2322
- y(fragmen)o(t)g(will)h(not)h(compile:)75 2430 y Fd(data)21
- b(Foo)g(a)h(=)f(A)h(|)f(B)h(\(Foo)f([a]\))75 2530 y(f)h(A)196
- b(=)21 b(\(\))75 2580 y(f)h(\(B)f(thing\))g(=)g(f)h(thing)75
- 2688 y Ff(Adding)13 b(a)h(signature)g(to)g Fd(f)p Ff(,)p eop
- %%Page: 19 20
- bop 75 50 a Fg(8)41 b(ANNOT)m(A)m(TIONS)1385 b Ff(19)75 195
- y Fd(f)22 b(::)f(Foo)g(a)h(->)f(\(\))75 303 y Ff(will)12 b(allo)o(w)g(the)i
- (recursiv)o(e)h(call)e(to)g(b)q(e)h(p)q(olymorphic)e(and)h(a)o(v)o(oid)f(a)i
- (t)o(yp)q(e)g(error.)k(An)c(explicit)f(t)o(yp)q(e)h(signature)g(is)75
- 353 y(required)h(to)f(mak)o(e)e(use)j(of)e(p)q(olymorphic)f(recursion.)137
- 428 y(The)g(Hask)o(ell)f(1.3)f(committee)g(is)h(seriously)h(considering)f
- (dropping)g Fd(+)g Ff(patterns)i(from)c(the)j(language.)17
- b(These)75 477 y(are)d(still)f(in)h(the)g(Y)m(ale)f(system)h(but)g(should)g
- (b)q(e)g(a)o(v)o(oided.)75 640 y Fi(8)69 b(Annotations)75 755
- y Ff(The)13 b(Y)m(ale)f(compiler)f(recognizes)j(a)e(n)o(um)o(b)q(er)g(of)g
- (annotations)g(in)g(the)h(source)h(program.)i(Annotations)c(are)h(used)75
- 805 y(for)h(strictness)i(prop)q(erties,)e(optimizer)f(con)o(trol,)g(and)h
- (the)g(in)o(terface)h(to)f(the)g(Lisp)g(en)o(vironmen)o(t.)75
- 946 y Fh(8.1)56 b(Annotation)18 b(Syn)n(tax)75 1048 y Ff(Annotations)13
- b(are)h(a)f(sp)q(ecial)g(form)f(of)h(commen)o(ts.)j(They)d(b)q(egin)h(with)f
- Fd({-#)f Ff(and)h(end)h(with)f Fd(#-})o Ff(.)18 b(Within)13
- b(these)75 1098 y(delimiters,)g(annotations)h(are)h(separated)h(b)o(y)e
- (semicolons)g(in)g(the)h(same)f(manner)f(as)i(declarations.)20
- b(La)o(y)o(out)14 b(is)75 1147 y(in)f(e\013ect)j(allo)o(wing)c(the)i
- (semicolons)f(to)g(b)q(e)i(omitted.)137 1222 y(Eac)o(h)f(annotation)f(has)h
- (a)f(name)f(and)i(p)q(ossibly)f(a)g(set)i(of)e(argumen)o(ts,)f(enclosed)j(in)
- e(paren)o(theses)j(and)e(sepa-)75 1272 y(rated)h(b)o(y)e(commas.)j(The)e
- (exact)h(syn)o(tax)e(of)h(the)g(argumen)o(ts)f(v)n(aries)h(with)g(the)g(t)o
- (yp)q(e)h(of)e(annotation.)137 1347 y(Annotations)h(generally)g(refer)h(to)f
- (some)f(ob)r(ject)i(in)e(the)i(program.)i(Sometimes)12 b(this)i(ob)r(ject)h
- (is)f(implicit)d(in)75 1397 y(the)16 b(placemen)o(t)f(of)g(the)h(annotation.)
- 21 b(Otherwise,)c(the)f(ob)r(ject)g(b)q(eing)g(annotated)f(is)h(explicitly)e
- (named)g(using)75 1446 y Fd(::)g Ff(syn)o 21 b(f)h(::)f(Specialize)f(\(Int->Int->Int->In)o(t\))f(#-})137
- 1371 y Ff(Y)m(ou)12 b(can)h(sp)q(ecify)h(sev)o(eral)f(annotations)f(that)h
- (sp)q(ecialize)h(the)f(same)f(function)g(for)h(di\013eren)o(t)h(signatures.)k
- (In)75 1421 y(this)13 b(case,)h(the)g(optimizer)d(attempts)i(to)g(matc)o(h)f
- (calls)g(against)h(these)h(signatures)g(in)f(the)g(same)g(order)g(in)g(whic)o
- (h)75 1471 y(the)h(annotations)g(app)q(eared.)137 1542 y(As)e(a)f(practical)g
- (matter,)g(it's)g(only)f(useful)i(to)f(supply)g Fd(Specialize)e
- Ff(annotations)i(for)g(o)o(v)o(erloaded)g(functions)75 1592
- y(whose)g(signatures)g(ha)o(v)o(e)f(non-empt)o(y)f(con)o(texts.)17
- b(If)10 b(y)o(ou)g(w)o(an)o(t)g(to)g(generate)h(sp)q(ecialized)g(v)o(ersions)
- g(of)f(the)g(default)75 1641 y(metho)q(ds)j(in)g(a)f Fd(Class)h
- Ff(de\014nition,)f(y)o(ou)h(should)g(not)g(use)h(the)g Fd(Specialize)d
- Ff(annotation.)17 b(Instead,)c(y)o(ou)g(should)75 1691 y(put)j
- Fd(Inline)e Ff(annotations)h(for)g(the)h(appropriate)g(metho)q(ds)f(in)g(the)
- h(b)q(o)q(dy)g(of)f(the)h Fd(Class)e Ff(de\014nition.)23 b(\(And)16
- b(if)75 1741 y(y)o(ou)f(w)o(an)o(t)f(the)i(optimizer)e(to)g(completely)g
- (inline)g(the)i(metho)q(ds)f(for)f(a)h(particular)g(instance,)g(y)o(ou)g
- (should)g(put)75 1791 y(another)f Fd(Inline)f Ff(annotation)g(in)g(the)i(b)q
- (o)q(dy)f(of)f(that)h Fd(Instance)e Ff(de\014nition.\))137
- 1862 y(The)18 b Fd(Complexity)e Ff(annotation)h(indicates)g(the)i(appro)o
- (ximate)c(time)i(of)g(ev)n(aluation)f(of)h(a)g(function.)30
- b(The)75 1911 y(optimizer)18 b(uses)i(this)g(information)c(to)j(a)o(v)o(oid)f
- (dela)o(ying)g(relativ)o(ely)g(trivial)g(expressions.)36 b(This)19
- b(annotation)75 1961 y(tak)o(es)14 b(an)g(in)o(teger)g(argumen)o(t,)f(lik)o
- (e:)137 2032 y Fd({-#)21 b(f)h(::)f(Complexity\(3\))f(#-})137
- 2103 y Ff(The)13 b(optimizer)d(curren)o(tly)j(ignores)f(the)h(magnitude)d(of)
- h(the)i(complexit)o(y)d(argumen)o(t,)h(but)h(this)g(ma)o(y)e(c)o(hange)75
- 2153 y(in)j(future)i(releases.)20 b(W)m(e)13 b(suggest)i(that)f(y)o(ou)f(use)
- i(v)n(alues)e(b)q(et)o(w)o(een)j(1)d(and)h(10.)75 2288 y Fh(8.4)56
- b(Other)18 b(Annotations)75 2385 y Ff(The)c(Lisp)g(in)o(terface)h(uses)g(man)
- o(y)d(other)i(annotations;)f(these)i(are)g(describ)q(ed)g(in)f(a)f(separate)i
- (do)q(cumen)o(t.)75 2542 y Fi(9)69 b(In)n(terfacing)23 b(with)e(Other)h
- (Languages)75 2654 y Ff(Y)m(ale)15 b(Hask)o(ell)f(pro)o(vides)i(a)f(simple)f
- (metho)q(d)g(for)h(calling)f(functions)h(written)h(in)f(other)h(languages.)21
- b(Both)16 b(Lisp)75 2704 y(and)i(C)f(routines)i(can)f(b)q(e)g(called)g(from)e
- (Hask)o(ell)h(using)h(the)h(foreign)e(function)g(in)o(terface.)31
- b(This)18 b(in)o(terface)g(is)p eop
- %%Page: 21 22
- bop 75 50 a Fg(10)41 b(D)o(YNAMIC)14 b(TYPING)1286 b Ff(21)75
- 195 y(based)14 b(on)f(in)o(terface)h(\014les)g(whic)o(h)f(describ)q(e)i(Lisp)
- e(co)q(de)h(instead)g(of)f(Hask)o(ell)g(functions.)k(F)m(ull)12
- b(details)i(are)f(found)75 245 y(in)g(a)h(tec)o(hnical)g(rep)q(ort)h
- (included)f(in)g(the)g(standard)g(distribution)g(of)f(the)h(Y)m(ale)g
- (system.)75 405 y Fi(10)69 b(Dynamic)22 b(T)n(yping)75 520
- y Ff(Y)m(ale)13 b(Hask)o(ell)h(has)f(b)q(een)i(extended)h(with)d(an)h(exp)q
- (erimen)o(tal)f(dynamic)f(t)o(yping)h(system.)18 b(Dynamic)12
- b(t)o(yping)h(has)75 570 y(b)q(een)j(used)f(to)f(implemen)o(t)e(deriv)o(ed)j
- (instances)h(in)e(our)g(compiler.)19 b(Some)13 b(minor)g(extensions)i(to)g
- (the)g(language)75 619 y(ha)o(v)o(e)e(b)q(een)i(made,)d(namely)g(the)i(use)h
- (of)e(patterns)i(in)e(the)h(form)e Fc(p)n(at)18 b Fd(::)13
- b Fc(typ)n(e)k Ff(and)c(the)i Fd(deriving)d Ff(declaration,)75
- 669 y(but)i(otherwise)h(these)g(extensions)g(are)g(not)e(noticeable)h(unless)
- h(the)g(mo)q(dule)d Fd(Dynamic)g Ff(is)i(imp)q(orted.)137 743
- y(A)32 b(preliminary)d(tec)o(hnical)j(rep)q(ort)h(describing)f(dynamic)e(t)o
- (yping)h(is)g(included)h(in)f(the)h(distribu-)75 792 y(tion.)80
- b(The)36 b(principal)e(do)q(cumen)o(tation)f(is)i(in)f(the)i(prelude)f
- (extensions.)82 b(Lo)q(ok)34 b(at)h(the)h(\014les)75 842 y
- Fd($PRELUDE/PreludeD)o(ynami)o(c.hs)10 b Ff(and)k Fd($PRELUDE/PreludeDe)o
- (rivin)o(g)d Ff(for)j(complete)f(do)q(cumen)o(tation.)75 1002
- y Fi(11)69 b(Errors)25 b(and)f(Debugging)75 1117 y Ff(Most)12
- b(error)h(messages)f(pro)q(duced)h(b)o(y)f(the)g(Y)m(ale)f(compiler)g(should)
- h(p)q(oin)o(t)f(directly)h(to)g(ob)o(vious)f(problems)g(in)g(the)75
- 1167 y(user)k(program.)h(W)m(e)e(ha)o(v)o(e)g(tried)g(to)g(mak)o(e)e(error)j
- (messages)f(as)g(readable)g(and)g(informativ)o(e)d(as)j(p)q(ossible.)75
- 1306 y Fh(11.1)56 b(T)n(yp)r(e)18 b(Chec)n(king)g(Errors)75
- 1406 y Ff(The)e(most)f(di\016cult)g(errors)i(to)e(deal)h(with)f(are)h(t)o(yp)
- q(e)g(errors.)25 b(Generally)m(,)15 b(the)h(compiler)e(cannot)i(easily)f(p)q
- (oin)o(t)75 1456 y(to)h(the)g(exact)h(source)g(of)f(a)f(t)o(yp)q(e)i(mismatc)
- o(h.)22 b(W)m(e)15 b(ha)o(v)o(e)h(made)f(ev)o(ery)i(e\013ort)f(to)g(explain)f
- (errors)j(during)d(t)o(yp)q(e)75 1506 y(c)o(hec)o(king)f(but)g(there)i(are)e
- (times)f(when)h(\014nding)f(the)i(true)g(cause)g(of)e(a)h(t)o(yp)q(e)g(error)
- h(tak)o(es)f(some)f(e\013ort.)137 1579 y(One)h(w)o(a)o(y)f(to)g(a)o(v)o(oid)f
- (obscure)j(t)o(yp)q(e)f(errors)g(and)f(generally)g(impro)o(v)o(e)f(program)f
- (readabilit)o(y)i(is)g(to)g(a\016x)f(t)o(yp)q(e)75 1629 y(signatures)j(to)e
- (all)g(top)h(lev)o(el)f(de\014nitions.)18 b(This)c(practice)h(has)f(a)g(n)o
- (um)o(b)q(er)f(of)g(adv)n(an)o(tages:)137 1733 y Fe(\017)21
- b Ff(Incorrect)16 b(de\014nitions)f(of)g(a)f(function)h(are)g(caugh)o(t)g(b)o
- (y)g(the)g(t)o(yp)q(e)g(signature)h(instead)f(of)f(causing)h(a)f(t)o(yp)q(e)
- 179 1783 y(error)h(at)e(a)h(call)f(site.)137 1864 y Fe(\017)21
- b Ff(Un)o(w)o(an)o(ted)14 b(o)o(v)o(erloading)e(is)i(eliminated.)137
- 1946 y Fe(\017)21 b Ff(The)14 b(signatures)h(pro)o(vide)e(an)h(additional)e
- (lev)o(el)i(of)f(do)q(cumen)o(tation.)75 2050 y(Y)m(ou)j(can)h(also)f
- (monitor)e(the)k(inferred)f(t)o(yp)q(es)g(b)o(y)g(turning)f(on)h(the)g
- Fd(type)e Ff(prin)o(ter.)27 b(Do)16 b(this)h(from)e(the)i(editor)75
- 2100 y(in)o(terface)c(via)e Fd(C-c)22 b(C-p)11 b Ff(and)h(selecting)h(the)g
- (prin)o(ter)g(for)f Fd(type)o Ff(,)g(or)h(use)g Fd(:p+)21 b(type)12
- b Ff(in)f(the)i(command)d(in)o(terface.)137 2173 y(The)k(pattern)h(binding)d
- (rule)i(can)g(b)q(e)g(the)g(source)h(of)e(unexp)q(ected)j(errors.)j(This)13
- b(rule)h(restricts)h(o)o(v)o(erloading)75 2223 y(of)d(v)n(ariables)h(b)q
- (ound)g(in)f(pattern)i(bindings.)j(Global)11 b(o)o(v)o(erloaded)i(constan)o
- (ts,)g(structures)j(whic)o(h)d(con)o(tain)f(o)o(v)o(er-)75
- 2273 y(loaded)g(functions,)g(and)h(functions)f(without)g(argumen)o(ts)g
- (\(that)g(is,)h(de\014ned)g(b)o(y)f(a)g(pattern)i(binding\))d(can)i(cause)75
- 2323 y(an)h(error)g(when)h(they)f(ha)o(v)o(e)g(no)g(explicit)f(t)o(yp)q(e)h
- (signature.)137 2396 y(The)d(class)f(system)g(causes)i(t)o(yp)q(e)f(c)o(hec)o
- (king)f(to)g(fail)f(in)g(a)h(di\013eren)o(t)h(w)o(a)o(y)f(for)f(o)o(v)o
- (erloaded)h(function)g(parameters)75 2446 y(than)k(for)f(non-o)o(v)o
- (erloaded)h(parameters.)k(F)m(or)13 b(example,)75 2550 y Fd(length)21
- b(True)75 2654 y Ff(giv)o(es)d(a)g(standard)g(t)o(yp)q(e)h(mismatc)o(h)d
- (error.)31 b(An)19 b(o)o(v)o(erloaded)e(function,)i(lik)o(e)e
- Fd(+)p Ff(,)i(handles)f(t)o(yp)q(e)h(mismatc)o(hes)75 2704
- y(di\013eren)o(tly)m(.)f(The)c Fd(+)f Ff(function)g(accepts)i(an)o(y)e(t)o
- (yp)q(e)h(of)f(argumen)o(t)f(in)h(class)h Fd(Num)o Ff(.)k(An)13
- b(error)i(in)e(a)g(call)f(to)i Fd(+)o Ff(,)f(as)h(in:)p eop
- %%Page: 22 23
- bop 75 50 a Fg(11)41 b(ERR)o(ORS)13 b(AND)h(DEBUGGING)1114
- b Ff(22)75 195 y Fd(True)21 b(+)h(False)75 303 y Ff(results)d(in)e(a)g
- (message)g(indicating)g(that)g Fd(Bool)g Ff(is)g(not)h(in)f(class)h
- Fd(Num)o Ff(.)29 b(Suc)o(h)18 b(messages)g(usually)e(result)j(from)75
- 353 y(ordinary)13 b(t)o(yp)q(e)i(mismatc)o(hes.)137 428 y(Another)d(source)g
- (of)d(subtle)j(t)o(yp)q(e)f(errors)h(is)e(o)o(v)o(erloaded)g(n)o(umeric)g
- (constan)o(ts.)18 b(An)11 b(in)o(teger)g(constan)o(t)g(has)f(the)75
- 477 y(t)o(yping)i Fd(Num)21 b(a)g(=>)h(a)o Ff(.)c(When)12 b(in)o(tegers)i
- (are)e(used)i(unexp)q(ectedly)m(,)f(the)g(t)o(yp)q(e)g(uni\014cation)e
- (algorithm)f(complains)75 527 y(that)k(the)g(parameter)g(t)o(yp)q(e)g(is)g
- (not)g(in)f(class)i Fd(Num)o Ff(.)j(F)m(or)c(example,)e(in:)75
- 635 y Fd(length)21 b(3)75 743 y Ff(the)f(t)o(yp)q(e)g(error)g(generated)g
- (indicates)g(that)f(lists)g -exhaustiv)o(e)h
- (case)h(statemen)o(ts)g(and)e(function)h(de\014nitions;)h(this)75
- 245 y(is)e(go)q(o)q(d)f(co)q(ding)g(practice)i(and)f(eases)h(debugging.)23
- b(It)16 b(is)g(also)f(go)q(o)q(d)g(co)q(ding)g(practice)i(to)f(a)o(v)o(oid)e
- (non-disjoin)o(t)75 295 y(patterns)f(whenev)o(er)f(p)q(ossible)g(\(suc)o(h)g
- (patterns)h(also)e(tend)h(to)f(translate)h(in)o(to)e(less)i(e\016cien)o(t)g
- (co)q(de)g(than)g(patterns)75 345 y(written)i(disjoin)o(tly\).)137
- 419 y(Using)g Fd(Int)g Ff(arithmetic)f(can)h(lead)g(to)g(serious)h(run)o
- (time)e(errors)j(when)f(o)o(v)o(er\015o)o(ws)f(o)q(ccur.)20
- b(Only)14 b(unsafe)h Fd(Int)75 469 y Ff(op)q(erations)20 b(are)f(curren)o
- (tly)h(pro)o(vided.)34 b(If)19 b(y)o(ou)g(run)h(in)o(to)e(memory)f
- (protection)j(problems,)f(illegal)e(instruc-)75 519 y(tions,)c(or)g(other)g
- (m)o(ysterious)g(errors)h(when)g(the)g(program)d(executes,)k(c)o(hec)o(k)f
- (for)f(p)q(oten)o(tial)g(o)o(v)o(er\015o)o(w)f(problems.)75
- 569 y(Changing)h Fd(Int)g Ff(to)h Fd(Integer)e Ff(should)i(\014x)g(this)g
- (problem.)137 643 y(If)g(y)o(ou)g(think)h(y)o(our)f(program)f(is)h(in)g(an)g
- (in\014nite)h(lo)q(op,)e(use)i Fd(C-c)21 b(i)15 b Ff(from)d(the)k(editor)e
- (in)o(terface)h(or)g Fd(^C)f Ff(from)75 693 y(the)g(command)e(in)o(terface)i
- (to)g(in)o(terrupt)g(the)h(Hask)o(ell)e(pro)q(cess.)75 834
- y Fh(11.3)56 b(Lisp)18 b(Errors)75 936 y Ff(Bugs)c(in)f(the)i(Y)m(ale)e(Hask)
- o(ell)g(implemen)o(tati)o(on)e(ma)o(y)h(cause)i(an)g(error)g(to)g(b)q(e)g
- (rep)q(orted)h(b)o(y)f(the)g(underlying)f(Lisp)75 986 y(system.)35
- b(Lisp)19 b(errors)i(ma)o(y)d(also)h(o)q(ccur)h(as)g(a)f(result)h(of)f
- (executing)i(co)q(de)f(y)o(ou)f(ha)o(v)o(e)h(loaded)f(in)o(to)f(Hask)o(ell)75
- 1035 y(through)f(the)h(foreign-function)e(in)o(terface.)28
- b(If)17 b(this)g(happ)q(ens,)i(there)f(is)f(a)g(handler)g(in)g(place)g(that)h
- (normally)75 1085 y(causes)d(con)o(trol)f(to)g(b)q(e)g(returned)i(to)d(the)i
- (main)d(command)f(lo)q(op,)h(rather)j(than)f(en)o(tering)h(the)f(Lisp)g
- (debugger.)137 1160 y(If)g(y)o(ou)g(w)o(an)o(t)g(to)g(b)q(e)h(able)f(to)g
- (mess)g(around)g(with)g(the)h(Lisp)f(debugger,)h(y)o(ou)f(should)g(issue)h
- (the)g Fd(:debug)20 b(on)75 1210 y Ff(command,)11 b(or)i(put)i(this)f(in)f(y)
- o(our)h(Hask)o(ell)f(initialization)e(\014le:)75 1326 y Fd(\(setf)21
- b(*haskell-debug-i)o(n-lis)o(p*)e('#t\))75 1488 y Fi(12)69
- b(P)n(erformance)23 b(Issues)75 1604 y Ff(Man)o(y)12 b(di\013eren)o(t)i
- (factors)f(a\013ect)h(the)f(sp)q(eed)h(of)e(the)h(compiled)e(Hask)o(ell)i(co)
- q(de)g(and)g(the)g(compilation)d(time.)16 b(This)75 1654 y(section)f(deals)f
- (with)f(b)q(oth)h(of)f(these)j(issues.)75 1795 y Fh(12.1)56
- b(Generating)17 b(F)-5 b(aster)19 b(Co)r(de)75 1897 y Ff(The)14
- b(co)q(de)h(executed)g(under)g(the)f(Hask)o(ell)f(system)h(ma)o(y)d(b)q(e)k
- (either)f(compiled)e(\(using)i Fd(:compile)e Ff(or)h Fd(C-c)21
- b(c)p Ff(\))14 b(or)75 1946 y(in)o(terpreted.)20 b(If)13 b(y)o(our)h(program)
- e(is)i(running)g(to)q(o)f(slo)o(w,)g(ensure)j(that)d(all)g(comp)q(onen)o(ts)h
- (are)g(compiled)e(\014rst.)137 2021 y(Using)e(strict)h(structures)h(often)e
- (greatly)g(sp)q(eeds)i(program)c(execution.)17 b(While)9 b(care)i(m)o(ust)e
- (b)q(e)i(tak)o(en)f(to)f(a)o(v)o(oid)75 2071 y(losing)h(laziness)h(that)g(a)g
- (program)e(dep)q(ends)k(on,)d(attac)o(hing)h(strictness)i(annotations)d(to)h
- (y)o(our)f(data)h(declarations)75 2121 y(can)j(ha)o(v)o(e)g(a)f(dramatic)g
- (e\013ect)i(of)f(execution)g(time)f(and)h(memory)d(usage.)137
- 2195 y(Arithmetic)17 b(op)q(erations)h(can)g(often)g(b)q(e)g(impro)o(v)o(ed)e
- (b)o(y)i(pa)o(ying)e(careful)i(atten)o(tion)g(to)f(the)h(t)o(yp)q(e)h
- (system.)75 2245 y(First,)d Fd(Int)f Ff(arithmetic)g(is)g(m)o(uc)o(h)g
- (faster)h(than)g Fd(Integer)e Ff(arithmetic.)22 b(Complex)14
- b(and)i(rational)e(n)o(um)o(b)q(ers)i(are)75 2295 y(not)k(implemen)o(ted)f
- (in)h(a)g(particularly)g(e\016cien)o(t)h(manner.)37 b(Arithmetic)20
- b(primitiv)o(es)f(implem)o(en)o(ted)g(b)o(y)h(the)75 2345 y(prelude)15
- b(instead)g(of)e(imp)q(orted)h(as)g(primitiv)o(es)e(are)j(often)f(v)o(ery)h
- (slo)o(w.)k(Ov)o(erloaded)14 b(arithmetic)f(op)q(erators)j(are)75
- 2395 y(particularly)g(slo)o(w.)27 b(Y)m(ou)16 b(should)h(use)h(t)o(yp)q(e)g
- (signatures)f(or)g(the)h Fd(Specialize)d Ff(annotation)h(to)h(a)o(v)o(oid)e
- (calling)75 2444 y(o)o(v)o(erloaded)f(functions)f(at)h(run)g(time.)137
- 2519 y(Other)21 b(asp)q(ects)g(of)e(the)h(p)q(erformance)f(re\015ect)i(the)f
- (Hask)o(ell)f(compiler)f(itself.)35 b(The)19 b(compiler)f(p)q(erforms)75
- 2569 y(man)o(y)f(optimizations,)h(including)g(strictness)j(analysis,)f
- (inlining,)e(function)h(sp)q(ecialization,)g(deforestation,)75
- 2619 y(and)c(others.)23 b(Y)m(ou)15 b(ma)o(y)e(wish)i(to)g(lo)q(ok)g(at)g
- (the)h(co)q(de)g(generated)g(b)o(y)f(the)h(compiler)e(to)h(observ)o(e)h(the)g
- (results)h(of)75 2669 y(these)e(optimizations.)p eop
- %%Page: 24 25
- bop 75 50 a Fg(12)41 b(PERF)o(ORMANCE)14 b(ISSUES)1184 b Ff(24)137
- 195 y(The)12 b(co)q(de)h(generator)f(is)g(able)f(to)h(p)q(erform)f(man)o(y)f
- (more)g(optimizations)g(on)h(\014rst-order)i(function)f(calls)f(than)75
- 245 y(on)16 b(higher)f(order)i(calls.)23 b(The)16 b Fd(Inline)f
- Ff(declaration)g(and)h(optimizer)e(can)i(help)g(turn)g(higher)g(order)g
- (calls)g(in)o(to)75 295 y(\014rst)f(order)f(ones.)137 366 y(If)e(y)o(ou)f(ha)
- o(v)o(e)h(functions)g(that)g(iterate)h(o)o(v)o(er)f(lists,)f(try)i(to)e
- (write)i(them)e(using)g(primitiv)o(es)g(suc)o(h)h(as)g Fd(foldr)f
- Ff(and)75 416 y Fd(map)i Ff(so)h(that)g(y)o(ou)g(can)g(tak)o(e)g(adv)n(an)o
- (tage)f(of)g(the)h(deforestation)h(optimizations)c(p)q(erformed)j(b)o(y)f
- (the)i(compiler.)75 553 y Fh(12.2)56 b(Av)n(oiding)18 b(Stac)n(k)h(Ov)n
- (er\015o)n(w)75 651 y Ff(If)14 b(y)o(ou)g(ha)o(v)o(e)g(problems)f(with)h
- (stac)o(k)h(o)o(v)o(er\015o)o(w,)e(y)o(ou)h(should)g(\014rst)h(c)o(hec)o(k)g
- (for)f(in\014nite)g(lo)q(ops)g(in)g(y)o(our)g(program.)75 701
- y(If)g(the)g(o)o(v)o(er\015o)o(w)g(is)f(not)h(caused)h(b)o(y)f(an)f
- (in\014nite)h(lo)q(op,)f(y)o(ou)g(ha)o(v)o(e)h(few)g(options.)137
- 772 y(If)f(y)o(ou)g(ha)o(v)o(e)g(built)f(Y)m(ale)h(Hask)o(ell)f(from)g
- (sources)j(using)e(CMU)g(Lisp,)g(y)o(ou)f(are)i(lik)o(ely)e(to)h(run)g(in)o
- (to)g(problems)75 822 y(b)q(ecause)20 b(the)e(stac)o(k)g(size)h(in)e(the)i
- (standard)f(CMU)g(distribution)g(is)f(really)h(to)q(o)f(small)f(for)h
- (running)h(Hask)o(ell.)75 872 y(Changing)13 b(the)h(stac)o(k)h(size)f(in)o(v)
- o(olv)o(es)f(rebuilding)g(CMU)h(Lisp)g(from)e(sources.)20 b(W)m(e)13
- b(ha)o(v)o(e)h(already)f(done)h(this)g(for)75 922 y(the)g(precompiled)g
- (CMU-based)g(Hask)o(ell)f(system)h(w)o(e)g(distribute.)137
- 993 y(Other)j(Lisp)f(systems)g(ha)o(v)o(e)f(v)n(arious)g(pro)q(cedures)j(for)
- d(allo)q(cating)f(larger)i(stac)o(ks.)24 b(Y)m(ou)16 b(will)e(ha)o(v)o(e)h
- (to)h(lo)q(ok)75 1043 y(in)o(to)d(the)i(do)q(cumen)o(tation)d(of)i(y)o(our)f
- (Lisp)h(system)g(to)f(\014nd)h(out)g(what)g(to)g(do.)75 1179
- y Fh(12.3)56 b(Optimizer)16 b(Options)75 1278 y Ff(By)i(default,)g(compiling)
- d(co)q(de)k(to)e(a)h(\014le)g(mak)o(es)e(use)j(of)e(all)g(optimizations)e(p)q
- (ossible.)30 b(Unless)19 b(y)o(ou)e(need)i(to)75 1328 y(impro)o(v)o(e)11
- b(compilation)e(time,)i(c)o(hanging)h(the)h(optimization)c(settings)14
- b(should)e(not)g(b)q(e)h(necessary)m(.)19 b(Here)14 b(is)e(a)g(list)75
- 1377 y(of)h(the)i(v)n(arious)e(optimizers)g(and)h(what)f(they)i(do.)75
- 1482 y Fa(inline)i Ff(If)h(this)h(option)f(is)g(enabled,)h(the)g(optimizer)e
- (marks)h(functions)g(that)h(ha)o(v)o(e)f(\\trivial")e(de\014nitions)j(as)179
- 1532 y(inlinable,)c(and)h(also)g(inlines)g(references)k(to)c(b)q(oth)h(v)n
- (ariables)f(and)g(functions)h(that)f(ha)o(v)o(e)h(already)f(b)q(een)179
- 1582 y(noted)e(as)g(inlinable.)j(If)c(it's)g(disabled,)h(the)g(optimizer)f
- (is)h(m)o(uc)o(h)e(more)h(conserv)n(ativ)o(e)i(ab)q(out)e(inlining.)75
- 1662 y Fa(constan)o(t)19 b Ff(This)12 b(option)g(con)o(trols)h(whether)h(the)
- g(optimizer)d(attempts)i(to)f(detect)j(function)d(applications)g(that)179
- 1712 y(ev)n(aluate)18 b(to)g(constan)o(t)h(v)n(alues,)f(sp)q(eci\014cally)h
- (applications)e(of)g(data)h(constructors)i(to)f(constan)o(t)f(argu-)179
- 1761 y(men)o(ts.)f(If)d(enabled,)f(the)i(optimizer)d(hoists)i(suc)o(h)h
- (applications)d(to)i(top)g(lev)o(el)f(to)h(a)o(v)o(oid)e(rep)q(eated)k(ev)n
- (alu-)179 1811 y(ations.)75 1891 y Fa(foldr)j Ff(If)9 b(this)i(optimization)c
- (is)j(enabled,)h( f(Hask)o
- (ell)e(executable)j(and)e(the)h Fd(Get)21 b(Info)14 b Ff(men)o(u)g(item,)g
- (and)h(then)h(set)g(the)g(size)75 728 y(listed)10 b(under)i
- Fd(Memory)n Ff(.)17 b(Y)m(ou)10 b(ma)o(y)e(also)i(need)h(to)g(go)f(to)g(the)h
- Fd(Memory)e Ff(con)o(trol)h(panel)g(to)g(enable)h(32-bit)e(addressing)75
- 778 y(and)14 b(p)q(ossibly)f(virtual)g(memory)m(.)75 919 y
- Fh(12.5)56 b(Impro)n(ving)17 b(Compilation)g(Time)75 1021 y
- Ff(The)e(b)q(est)h(w)o(a)o(y)e(to)g(reduce)j(the)e(time)e(of)h(compilation)e
- (is)j(to)f(break)h(y)o(our)g(program)e(in)o(to)h(smaller)f(compilation)75
- 1071 y(units.)28 b(This)17 b(is)g(not)g(only)f(go)q(o)q(d)h(programmi)o(ng)d
- (st)o(yle,)k(but)f(also)f(helps)i(to)f(isolate)g(compilation)d(errors)k(and)
- 75 1120 y(allo)o(ws)10 b(y)o(ou)i(to)f(tak)o(e)h(adv)n(an)o(tage)f(of)g(the)h
- (separate)h(compilation)c(capabilit)o(y)h(of)h(the)h(system.)17
- b(In)12 b(particular,)f(y)o(ou)75 1170 y(should)17 b(place)g(common)d(datat)o
- (yp)q(e)j(declarations)g(in)g(a)f(separate)i(\014le)f(whenev)o(er)i(p)q
- (ossible)e(|)f(this)h(conforms)75 1220 y(with)d(go)q(o)q(d)f(application)f
- (of)i(abstract)h(datat)o(yp)q(e)f(principles,)f(if)g(nothing)h(else.)137
- 1295 y(W)m(e)19 b(ha)o(v)o(e)g(found)g(that)h(the)f(time)f(required)j(for)e
- (the)g(Lisp)h(compiler)e(to)h(pro)q(cess)i(the)f(co)q(de)g(usually)e(far)75
- 1345 y(out)o(w)o(eighs)10 b(the)g(time)e(required)j(to)f(translate)g(Hask)o
- (ell)f(to)h(Lisp.)16 b(Some)9 b(Lisp)h(compilers)e(seem)i(to)g(ha)o(v)o(e)f
- (particular)75 1394 y(problems)14 b(with)g(the)h(large)f(n)o(um)o(b)q(er)g
- (of)g(lexical)g(closures)i(that)f(can)f(app)q(ear)i(in)e(the)h(generated)h
- (co)q(de.)21 b(T)o(ypical)75 1444 y(symptoms)13 b(of)h(this)h(trouble)g(are)g
- (when)g(the)h(Lisp)e(compiler)g(tak)o(es)h(a)f(v)o(ery)m(,)h(v)o(ery)g(long)f
- (time)f(and/or)i(runs)g(out)75 1494 y(of)f(memory)m(.)i(Large)f(compilation)c
- (units)j(are)h(split)f(in)o(to)g(smaller)f(c)o(h)o(unks)h(\(as)h(describ)q
- (ed)h(in)e(section)h(6\))f(b)q(efore)75 1544 y(pro)q(cessing)g(them)e(with)g
- (the)h(Lisp)f(compiler)g(in)g(an)g(attempt)g(to)g(a)o(v)o(oid)g(these)i
- (problems.)i(Ho)o(w)o(ev)o(er,)d(if)f(y)o(ou)g(still)75 1594
- y(run)i(in)o(to)f(trouble,)h(here)h(are)f(some)f(other)i(things)f(that)g(y)o
- (ou)f(can)h(try:)137 1710 y Fe(\017)21 b Ff(Sp)q(ecify)12 b(a)g(smaller)e
- Fd(:chunk-size)g Ff(in)i(the)h(unit)e(\014le.)18 b(The)12 b(default)g(v)n
- (alue)f(is)h(300)g(for)f(most)g(Lisp)h(systems,)179 1760 y(so)i(y)o(ou)f
- (migh)o(t)f(try)i(a)g(v)n(alue)f(of)g(100)g(or)h(less.)137
- 1843 y Fe(\017)21 b Ff(Disable)13 b(the)i Fd(lisp)e Ff(optimizer.)137
- 1926 y Fe(\017)21 b Ff(Enable)14 b(the)g Fd(delays)f Ff(optimizer.)137
- 2009 y Fe(\017)21 b Ff(Flatten)13 b(the)g(structure)i(of)e(y)o(our)f(co)q(de)
- i(so)f(that)g(y)o(ou)g(ha)o(v)o(e)f(more)g(top-lev)o(el)h(de\014nitions)f
- (and)h(few)o(er)h(large,)179 2059 y(deeply)g(nested)h(functions.)137
- 2142 y Fe(\017)21 b Ff(Mak)o(e)14 b(structure)i(slots)e(strict)g(when)h(p)q
- (ossible.)j(See)d(section)f(8.)75 2304 y Fi(13)69 b(Installation)22
- b(Pro)r(cedures)75 2428 y Fh(13.1)56 b(Hask)n(ell)17 b(Users)75
- 2529 y Ff(All)c(users)j(of)d(the)i(Hask)o(ell)e(system)h(on)g(Unix)g(need)h
- (to)f(mo)q(dify)d(their)k Fd(.cshrc)d Ff(\014le)i(to)g(de\014ne)h(the)g(en)o
- (vironmen)o(t)75 2579 y(v)n(ariable)f Fd(HASKELL)f Ff(and)i(read)g(the)h
- (Hask)o(ell)e(shell)h(init)f(\014le.)21 b(The)16 b(v)n(ariable)e
- Fd(HASKELL)f Ff(p)q(oin)o(ts)i(to)g(the)g(directory)75 2629
- y(in)e(whic)o(h)h(the)h(system)e(has)h(b)q(een)h(installed.)j(The)c(follo)o
- (wing)d(lines)j(go)g(in)f Fd(.cshrc)o Ff(:)p eop
- %%Page: 27 28
- bop 75 50 a Fg(13)41 b(INST)m(ALLA)m(TION)14 b(PR)o(OCEDURES)1053
- b Ff(27)75 195 y Fd(setenv)21 b(HASKELL)f(<directory)g(containing)f(Haskell>)
- 75 245 y(source)i($HASKELL/haskel)o(l-set)o(up)75 353 y Ff(Remem)o(b)q(er)12
- b(to)i(reload)g(y)o(our)f Fd(.cshrc)g Ff(b)q(efore)i(y)o(ou)e(run)h(Hask)o
- (ell)g(for)f(the)i(\014rst)f(time.)137 428 y(Users)i(of)d(the)h(Emacs)g(Hask)
- o(ell)f(mo)q(de)g(need)i(to)f(mak)o(e)e(a)i(few)f(c)o(hanged)i(to)e(their)i
- Fd(.emacs)d Ff(\014le.)137 535 y Fe(\017)21 b Ff(Add)14 b(the)g(Hask)o(ell)g
- (Emacs)f(to)q(ols)h(directory)g(to)g(the)g(searc)o(h)h(path:)179
- 635 y Fd(\(setq)21 b(load-path)310 685 y(\(cons)f(\(concat)h(\(getenv)f
- ("HASKELL"\))g("/emacs-tools"\))440 735 y(load-path\)\))137
- 834 y Fe(\017)h Ff(Change)14 b(the)g(v)n(alue)f(of)h(the)g(Emacs)f(v)n
- (ariable)g Fd(auto-mode-alist)m Ff(:)179 934 y Fd(\(setq)21
- b(auto-mode-alist)310 984 y(\(append)f('\(\("\\\\.hs$")f(.)j(haskell-mode\))d
- (\("\\\\.lhs$")h(.)h(haskell-mode\))506 1034 y(auto-mode-alist\))o(\))179
- 1133 y Ff(This)14 b(causes)h(Hask)o(ell)e(mo)q(de)g(to)h(b)q(e)g(selected)i
- (whenev)o(er)f(a)f(Hask)o(ell)f(source)j(\014le)d(is)h(edited.)137
- 1216 y Fe(\017)21 b Ff(Mak)o(e)14 b(Emacs)f(load)g(the)h(Hask)o(ell)g(mo)q
- (de)f(from)f(the)i(start:)179 1316 y Fd(\(load-library)19 b("haskell"\))75
- 1457 y Fh(13.2)56 b(Init)18 b(Files)75 1559 y Ff(It)g(is)f(p)q(ossible)h(to)f
- (customize)h(the)g(Hask)o(ell)f(en)o(vironmen)o(t)f(using)i(init)e(\014les)i
- (whic)o(h)g(are)g(read)g(to)f(the)h(Hask)o(ell)75 1608 y(system)j(at)g
- (startup.)41 b(These)23 b(can)e(b)q(e)h(used)g(to)g(con)o(trol)f(the)h
- (underlying)e(Lisp)i(en)o(vironmen)o(t.)39 b(The)22 b(\014les)75
- 1658 y Fd($HASKELL/.yhaskel)o(l)13 b Ff(and)k Fd(~/.yhaskell)d
- Ff(are)i(read)h(in)o(to)e(the)i(Lisp)f(system)g(on)h(startup.)25
- b(These)18 b(\014les)f(are)75 1708 y(dep)q(enden)o(t)f(on)d(the)i(particular)
- e(Lisp)h(b)q(eing)g(used)h(and)f(are)g(not)g(further)g(describ)q(ed)i(here.)
- 75 1849 y Fh(13.3)56 b(Installing)17 b(the)i(Distribution)75
- 1951 y Ff(If)13 b(y)o(ou)g(are)i(using)e(the)h(executable)h(distribution,)e
- (installation)e(of)j(the)g(Y)m(ale)f(Hask)o(ell)g(system)g(is)h(simple.)i
- (After)75 2000 y(unpac)o(king)h(the)i(tar)f(\014le,)h(the)g(system)e(should)h
- (b)q(e)h(immedia)o(tely)d(runnable)i(b)o(y)g(a)f(user)i(who)f(has)g(made)f
- (the)75 2050 y(necessary)f(mo)q(di\014cations)c(to)i Fd(.cshrc)e
- Ff(and)i Fd(.emacs)o Ff(.)137 2125 y(T)m(o)f(rebuild)g(the)h(system)f(from)e
- (the)j(source)g(distribution,)f(see)h(the)g(instructions)g(in)f(the)g
- Fd(README)f Ff(\014le)i(in)e(the)75 2175 y(appropriate)i(sub)q(directory)h
- (of)f Fd($HASKELL/com)m Ff(.)137 2249 y(Compiling)e(the)k(Y)m(ale)e(Hask)o
- (ell)h(system)f(from)g(the)h(source)i(distribution)d(tak)o(es)i(a)e(few)h
- (hours)h(and)f(requires)75 2299 y(a)20 b(substan)o(tial)h(amoun)o(t)e(of)h
- (virtual)g(memory)m(,)e(particularly)i(for)h(pro)q(cessing)h(the)f(standard)g
- (prelude.)39 b(W)m(e)75 2349 y(recommend)14 b(that)i(y)o(ou)f(ha)o(v)o(e)h
- (at)f(least)h(50)f(megab)o(ytes)g(\(and)h(preferably)g(more\))e(of)h(sw)o(ap)
- h(space)h(a)o(v)n(ailable)c(to)75 2399 y(do)19 b(this.)33 b(Once)20
- b(the)g(system)f(has)g(b)q(een)h(built,)f(w)o(e'v)o(e)g(b)q(een)h(able)f(to)g
- (run)g(reasonably-sized)g(programs)f(on)75 2449 y(w)o(orkstations)c(with)f
- (around)h(20)f(megab)o(ytes)h(of)f(sw)o(ap)h(space.)137 2523
- y(Y)m(ou)e(will)f(also)g(need)j(some)d(disk)h(space)h(to)g(rebuild)f(the)h
- (system.)k(On)c(a)e(Sparc,)i(the)g(Lucid)f(v)o(ersion)h(requires)75
- 2573 y(ab)q(out)j(15)f(megab)o(ytes,)h(the)g(CMU)g(v)o(ersion)g(ab)q(out)g
- (25)f(megab)o(ytes.)24 b(This)16 b(is)g(in)f(addition)g(to)h(the)g(disk)g
- (space)75 2623 y(required)f(to)f(install)e(the)j(Lisp)f(system.)p
- eop
- %%Page: 28 29
- bop 75 50 a Fg(13)41 b(INST)m(ALLA)m(TION)14 b(PR)o(OCEDURES)1053
- b Ff(28)75 195 y Fh(13.4)56 b(Installing)17 b(Y)-5 b(ale)19
- b(Hask)n(ell)f(on)g(the)h(Mac)75 297 y Ff(The)c(Macin)o(tosh)f(v)o(ersion)g
- (of)f(Y)m(ale)h(Hask)o(ell)f(is)h(distributed)h(in)f(a)f(self-extracting)i
- (Compact)e(Pro)h(arc)o(hiv)o(e;)g(just)75 346 y(double-clic)o(k)i(on)g(it)h
- (to)f(extract)i(the)f(\014les.)27 b(This)16 b(arc)o(hiv)o(e)h(con)o(tains)g
- (b)q(oth)f(the)i(full)d(source)j(distribution)e(and)75 396
- y(a)g(ready-to-run)h(executable.)26 b(Y)m(ou)15 b(can)i(also)e(rebuild)i
- (Hask)o(ell)e(on)h(the)h(Macin)o(tosh)f(from)f(scratc)o(h)i(using)f(the)75
- 446 y(normal)c(tar-format)g(Unix)h(source)i(distribution.)137
- 521 y(Apple's)f(licensing)g(restrictions)h(prev)o(en)o(t)f(us)g(from)e
- (distributing)i(an)f(executable)i(that)f(con)o(tains)g(the)g(MCL)75
- 571 y(compiler.)i(This)c(means)f(that,)i(in)e(the)i(executable)g(w)o(e)g(pro)
- o(vide,)f(the)g Fd(Compile)21 b(File)11 b Ff(men)o(u)g(command)f(signals)75
- 620 y(an)16 b(error)h(instead)g(of)f(doing)f(an)o(ything)g(useful.)26
- b(If)16 b(y)o(ou)g(w)o(an)o(t)f(to)i(b)q(e)f(able)g(to)h(compile)d(Hask)o
- (ell)i(programs)f(to)75 670 y(ob)r(ject)h(co)q(de,)g(y)o(ou)f(m)o(ust)g(buy)g
- (a)g(cop)o(y)h(of)f(MCL)g(and)g(rebuild)h(Y)m(ale)e(Hask)o(ell)h(from)f(the)i
- (sources.)25 b(See)16 b(the)g(\014le)75 720 y Fd($HASKELL/com/mcl/)o(READM)o
- (E)11 b Ff(for)j(instructions)g(on)g(ho)o(w)f(to)h(do)g(this.)137
- 795 y(W)m(e)g(ha)o(v)o(e)f(set)i(the)f(default)f(size)i(of)e(the)h
- (executable)h(w)o(e)f(distribute)g(so)g(that)g(it)f(will)f(run)i(comfortably)
- e(on)h(a)75 845 y(Macin)o(tosh)f(with)g(12MB)g(of)g(memory)m(.)j(If)d(y)o
- (our)g(mac)o(hine)f(has)h(less)h(memory)m(,)c(w)o(e)k(recommend)e(that)h(y)o
- (ou)g(enable)75 894 y(virtual)g(memory)f(rather)k(than)e(trying)g(to)g(mak)o
- (e)f(Hask)o(ell)h(run)g(in)g(a)g(smaller)f(partition.)17 b(\(Y)m(ou)c(can)h
- (c)o(hange)f(the)75 944 y(amoun)o(t)j(of)h(memory)e(Hask)o(ell)i(uses)i(from)
- d(the)i(\014nder)g(using)f(the)i Fd(Get)i(Info)c Ff(men)o(u)f(item;)i
- (virtual)e(memory)75 994 y(is)h(enabled)g(from)f(the)i Fd(Memory)d
- Ff(con)o(trol)i(panel.)28 b(Mak)o(e)17 b(sure)h(y)o(ou)f(also)g(enable)g
- (32-bit)f(addressing)i(from)d(the)75 1044 y Fd(Memory)e Ff(con)o(trol)g
- (panel.\))137 1119 y(Rebuilding)f(Hask)o(ell)g(from)f(sources)j(requires)g
- (somewhat)e(more)g(memory;)e(w)o(e)j(ha)o(v)o(e)f(b)q(een)i(installing)d(MCL)
- 75 1168 y(in)i(a)h(20MB)g(partition)f(to)h(do)f(this.)137 1243
- y(The)h(Macin)o(tosh)g(v)o(ersion)g(of)f(Y)m(ale)g(Hask)o(ell)g(do)q(es)h
- Fc(not)k Ff(run)c(on)g(a)f(P)o(o)o(w)o(erPC)h(\(b)q(ecause)i(MCL)d(do)q
- (esn't)h(w)o(ork)75 1293 y(on)g(that)g(platform)d(y)o(et)j(either\).)p
- eop
- %%Page: 29 30
- bop 75 50 a Fg(REFERENCES)1473 b Ff(29)75 195 y Fi(References)75
- 303 y Ff([1])20 b(Ch)o(uc)o(k)j(Consel.)48 b(F)m(ast)24 b(strictness)i
- (analysis)d(via)g(sym)o(b)q(olic)f(\014xp)q(oin)o(t)h(iteration.)47
- b(T)m(ec)o(hnical)24 b(Rep)q(ort)140 352 y(Y)m(ALEU/DCS/RR-867,)11
- b(Y)m(ale)i(Univ)o(ersit)o(y)h(Departmen)o(t)f(of)g(Computer)g(Science,)i
- (Septem)o(b)q(er)g(1991.)75 435 y([2])20 b(Andrew)d(Gill,)e(John)i(Launc)o(h)
- o(bury)m(,)g(and)f(Simon)f(L)i(P)o(eyton)g(Jones.)27 b(A)17
- b(short)g(cut)h(to)e(deforestation.)27 b(In)140 485 y Fc(F)m(unctional)15
- b(Pr)n(o)n(gr)n(amming)f(and)i(Computer)e(A)o(r)n(chite)n(ctur)n(e)p
- Ff(,)e(1993.)75 568 y([3])20 b(P)o(aul)d(Hudak,)i(Simon)d(P)o(eyton)j(Jones,)
- g(Philip)e(L.)h(W)m(adler,)g(Brian)g(Boutel,)h(Jon)g(F)m(airbairn,)e(Joseph)i
- (H.)140 618 y(F)m(asel,)e(Maria)g(M.)g(Guzman,)g(Kevin)h(Hammond,)d(John)i
- (Hughes,)i(Thomas)d(Johnsson,)j(Dic)o(k)e(Kieburtz,)140 668
- y(Rishiyur)12 b(Nikhil,)f(and)i(John)g(P)o(eterson.)18 b(Rep)q(ort)13
- b(on)g(the)h(programmi)o(ng)c(language)i(hask)o(ell:)17 b(a)c(non-strict,)140
- 718 y(purely)d(functional)g(language,)f(v)o(ersion)i(1.1.)g(T)m(ec)o(hnical)f
- (Rep)q(ort)h(Y)m(ALEU/DCS/RR-777,)d(Y)m(ale)i(Univ)o(ersit)o(y)140
- 768 y(Departmen)o(t)j(of)g(Computer)g(Science,)i(August)f(1991.)p
- eop
- %%Trailer
- end
- userdict /end-hook known{end-hook}if
- %%EOF
-